Как уменьшить расходы Amazon CloudFront?
1. Цель статьи
Я использую Cloudflare уже 3 года. За это время я также изучил многие другие сервисы CDN в мире, пока не обнаружил, что Amazon CloudFront является одним из лучших вариантов. Люди также много говорят об этом на разных форумах, и нет никаких сомнений в его качестве, но плохо то, что его стоимость очень высока. Некоторые люди получили счет на несколько сотен долларов в месяц за эту услугу, что ужасно по сравнению с CloudFlare.
В этой статье я расскажу о решениях, позволяющих снизить стоимость передачи данных из Cloudfront (Amazon S3) в Internet, чтобы вы могли спокойно пользоваться этим сервисом, не беспокоясь об увеличении счета.
Прежде всего, пожалуйста, прочтите мою следующую статью об Amazon Cloudfront и его связи с Amazon S3:

Вы также можете прочитать статью о различиях между Cloudfront и Cloudflare:
- Cloudfront vs Cloudflare
2. Насколько дорог Amazon Cloudfront?
При использовании пакета Pro из Cloudflare вы должны платить 20 долларов для каждого website, в то время как Amazon Cloudfront не заботится о том, сколько website вы используете. Его волнует только то, сколько данных распространяется в Internet, и именно так они вынимают деньги из вашего кармана.
Прежде чем предлагать решение для снижения стоимости использования Cloudfront, мы должны иметь представление о том, насколько дорог Cloudfront. Здесь я просто упомяну стоимость передачи данных в Internet из двух недорогих районов: США или Европа.
В основном при использовании Cloudfront вы получаете 1GB бесплатно каждый месяц. Позже вам придется заплатить около $0.085/1GB, что означает, что вы должны заплатить один доллар только за передачу 11.7GB данных в Internet.
Страница будет включать HTML и другие статические данные, такие как Image, Css, Javascript и так далее, со средним размером примерно 2MB, а иногда и 5MB, если ваш website содержит много изображений. Предполагая, что каждая страница составляет 2MB и каждый пользователь просматривает одну вашу страницу, 11.7GB достаточно только для обслуживания 5990 человек (и вы должны заплатить 1 доллар Amazon).
Если ваш website имеет 20 000 просмотров (page view) каждый день, вы потеряете 3,3 доллара, и каждый месяц вам придется платить 100 долларов. Для website с большим трафиком вы можете получить счет на 500 долларов или больше - это нормально.
Давайте проведем сравнение с арендой одного VPS:
- Арендуя VPS по цене $5/Month, вы получаете 25GB памяти и 1000GB передачи данных бесплатно.
- Арендуя VPS по цене $20/Month, вы получаете 80GB памяти и 4TB передачи данных бесплатно.
Действительно, использование сервиса Amazon Cloudfront стоит дорого. Вы можете перейти по ссылке ниже для получения подробного прейскуранта.
3. Как сократить расходы на использование?
В середине 2020 года я переключился на сервис DigitalOceanVPS и обнаружил, что у них есть отличный хостинг DigitalOcean Spaces. Этот сервис имеет архитектуру, аналогичную Amazon S3, и полностью совместим с Amazon S3 Rest API.

DigitalOcean позволяет создавать Spaces. Каждый Spaces похож на S3 Bucket из Amazon S3, но что более важно, Spaces уже поддерживает CDN.
Стоимость использования сервиса DigitalOcean Spaces очень дешевая. С 5 долларами в месяц вам предоставляется 250GB жесткого диска, разрешается неограниченно создавать Spaces и 1TB бесплатно передавать данные в Internet. Если вы пройдете эту квоту, вам придется заплатить дополнительную плату в размере $0.02/1GB.

Как вы, возможно, знаете, одна страница website включает в себя HTML-контент и другие материалы, такие как Css, Javascript, Image и т. д. Предполагая, что общий размер всего составляет 2MB, в котором HTML-контент очень мал, всего около 10KB на 100KB. Если вы разместите только HTML-данные в Amazon S3 и другие статические данные в DigitalOcean Spaces, сумма вашего счета сократится как минимум в 20 раз.

Если вы никогда не пользовались DigitalOcean, нажмите на ссылку ниже и создайте новую учетную запись. Вы получите $100 кредита, действительного в течение 2 месяцев.
- Create DigitalOcean Spaces Bucket
Gzip?
Amazon Cloudfront поддерживает Gzip для сжатия статических файлов. Когда он включен, HTML-файлы могут быть уменьшены в размере в 5 раз. Когда запрос (request) отправляется в Cloudfront, он возвращает браузеру файл Gzip, браузер извлекает этот файл для получения исходного HTML-контента.

Предполагая, что HTML-файлы с размером около 100KB будут сжаты в 20KB, а ваш website имеет 20 000 просмотров (page view) в день, Cloudfront передаст 390MB в Internet.
Cloudfront будет передавать 11.5GB в Internet за один месяц, что эквивалентно 1 доллару (удивительное число).
Cloudfront будет передавать 11.5GB в Internet за один месяц, что эквивалентно 1 доллару (удивительное число).
Примечание: На самом деле способ расчета стоимости за использование Amazon Cloudfront немного сложнее. Это зависит от географического местоположения сервера, обслуживающего пользователей. Однако с помощью вышеупомянутого решения ваши счета из Amazon будут значительно сокращены.

- Amazon Gzip S3