Amazon S3 предоставляет почти безграничный объем хранилища, который обойдется достаточно дешево для небольшого веб-проекта. Но с увеличением объема данных, нужно платить не только за хранилище, но также за трафик, запросы GET, PUT, COPY, POST и LIST.
Расценки перечислены на [https://aws.amazon.com/ru/s3/pricing/ странице AWS], посчитать можно в [http://calculator.s3.amazonaws.com/index.html калькуляторе].
Бесплатный ограниченный доступ дает 5 ГБ хранилища, 20 000 запросов GET и 2000 запросов PUT на год. Затем придется выкладывать по $30 за терабайт хранилища и $90 за каждый терабайт трафика. Сайт со 100 тыс. просмотров в сутки, который содержит по 5 фото на каждой странице, как раз и будет генерировать такой трафик. А при росте популярности в 10 раз платить придется почти $1000 в месяц.
Amazon S3 – не CDN. Намного дешевле раздавать статику для популярного веб-приложения при помощи собственных серверов или отдельного провайдера CDN.
У Amazon есть своя сеть доставки контента – [https://aws.amazon.com/ru/cloudfront/ CloudFront]. Она быстрее и дешевле S3, к тому же интегрирована в другие службы AWS.
Передача данных из S3 в CloudFront бесплатна, загрузка данных на CDN из внешнего источника стоит всего $20 за 1 ТБ, а раздача первых 10 ТБ в месяц будет стоить $850. При этом цена уменьшается с увеличением трафика.
Проще всего подключить CloudFront через веб-консоль AWS, или при помощи CLI:
aws cloudfront create-distribution
**–origin-domain-name my-bucket.s3.amazonaws.com **
–default-root-object index.html
## Указывает домен или контейнер S3
Объем трафика наиболее существенно влияет на стоимость S3.
Поэтому кэширование снизит трафик и месячный чек от Amazon – файлы загружаются на S3, а отдаются через собственные кэш-сервера.
Для этого подходит Varnish, который умеет работать с AWS:
backend s3 {
.host = “s3.amazonaws.com”;
.port = “80”;
}
sub vcl_recv {
**if (req.url ~ “.(gif|jpg|jpeg|png)$”) {**
unset req.http.cookie;
unset req.http.cache-control;
unset req.http.pragma;
unset req.http.expires;
unset req.http.etag;
set req.backend = s3;
**set req.http.host = “test-bucket.s3.amazonaws.com”;**
lookup;
}
}
sub vcl_fetch {
set obj.ttl = 3w;
}
## Будет кэшировать картинки из test-bucket
Если же вы планируете отдавать большие файлы через S3, то есть смысл воспользоваться встроенной поддержкой BitTorrent. Так что используя сеть peer-to-peer каждый клиент будет скачивать и раздавать файлы, тем самым уменьшая трафик S3.
Создать торрент-файл очень просто – нужно добавить ?torrent к ссылке на файл, размещенный на S3:
# Было
http://s3.amazonaws.com/test_bucket/somefile
# Стало
http://s3.amazonaws.com/test_bucket/somefile**?torrent**
## Клиенты автоматически скачают торрент-файл
Если S3 по большей части используется для хранения резервных копий, рассмотрите вариант использования Glacier – хранилища резервных копий. Сервис ни в коем случае не заменит S3, но позволит держать редко используемые файлы, которые не нужны в реальном времени.
Примечательно, что Glacier, в виду своей ограниченности, существенно дешевле S3 – хранение 1 ТБ данных обойдется в $7 в месяц, а скачивание 1 ТБ в $90.
Чтобы подключить сервис, нужно создать политику жизненного цикла, включив Glacier в transfer:
sample-rule
Enabled
****
**30**
**GLACIER**
365
## Автоматическая выгрузка файлов в Glacier по истечении 30 дней
Не используйте Amazon S3 качестве CDN, кэширование при помощи отдельных недорогих серверов и включение BitTorrent для отдачи файлов помогут существенно сэкономить без снижения производительности веб-приложения.
Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…
Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…
Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…
В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…
Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…
Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…