Поиск по сайту:

Начало работы с CDN CloudFront от AWS


Сеть доставки контента (CDN) — это сеть серверов по всему миру, которые кэшируют ваши статические ресурсы, снижая нагрузку на ваши основные веб-серверы. CDN CloudFront от AWS прост в использовании, быстро настраивается и дешев в эксплуатации.

Что такое CloudFront?

Есть два основных варианта использования CDN. Чаще всего они используются для размещения большого статического контента, который было бы невозможно разместить на традиционном веб-сервере, например больших видео, изображений или других больших статических носителей. CloudFront использует для этой цели S3; вы можете поместить все свои изображения и видео в корзину S3 и настроить CloudFront для обслуживания этой корзины.

На самом деле, если вам не нужна обработка на стороне сервера, вы даже можете настроить корзину S3 для размещения всего веб-сайта, что особенно хорошо работает для клиентских приложений JavaScript, созданных с использованием таких фреймворков, как React. В этой настройке CloudFront используется для обеспечения отказоустойчивой сети доставки по всему миру и обеспечения минимально возможной задержки для каждого пользователя.

Поскольку CDN кэшируют контент по всему миру, они также используются в качестве еще одного уровня кэширования для всего вашего веб-сайта. Для многих страниц вам не нужно необходимо обслуживать их напрямую с вашего веб-сервера. Особенно для сайтов WordPress, где каждый запрос обрабатывается на стороне сервера, это может создать огромную нагрузку на ваши серверы. Вместо этого CloudFront находится перед ним и обрабатывает основную часть нагрузки.

Что касается стоимости, CloudFront не так уж и дорог. Вы просто платите на основе переданных данных (как и в большинстве сервисов AWS) и количества обслуживаемых HTTP-запросов. Стоимость передачи данных зависит от региона, но составляет 0,020 долл. США за ГБ для США и ЕС. Стоимость запроса составляет 0,01 доллара США за 10 000 запросов HTTPS. Это сопоставимо с другими конкурентами, такими как Fastly.

Запрос сертификата от ACM

Если вы планируете использовать свой собственный URL-адрес (а не *.cloudfront.net), вам придется запросить новый сертификат SSL/TLS в диспетчере сертификатов AWS (ACM). По какой-то причине нет возможности обновить раскрывающийся список для выбора сертификата при настройке раздачи CloudFront, поэтому вам придется запросить этот сертификат заранее.

Стоит отметить, что на самом деле это полностью бесплатный SSL — услуга, за которую многие компании берут с вас сотни долларов. Хотя LetsEncrypt предлагает бесплатный SSL, его необходимо обновлять каждые несколько месяцев с помощью задания cron (конечно, он настраивается автоматически, так что это не большая проблема). Однако сертификаты, подготовленные с помощью ACM, будут автоматически продлеваться, и срок их действия не истечет, пока они используются.

Перейдите в консоль управления ACM и подготовьте новый общедоступный сертификат. Введите имена доменов, которые вы будете использовать (например, yourdomain.com и *.yourdomain.com).

Для каждого домена вам нужно будет подтвердить, что вы являетесь его владельцем, создав новую запись CNAME в DNS. Если вы используете собственный DNS AWS Route 53, вы можете нажать кнопку, чтобы создать эти записи автоматически.

Это может занять несколько минут. После проверки вы увидите, что оранжевый цвет «Ожидает проверки» сменяется зеленым «Выпущено», и вы можете перейти к настройке CloudFront.

Начало работы с CloudFront

Перейдите в консоль управления CloudFront и создайте новую веб-рассылку. Другой вариант — RTMP, используемый исключительно для потоковой передачи видео в реальном времени. В большинстве случаев веб — это, вероятно, то, что вам нужно.

Во-первых, вам нужно настроить источник. Если вы используете корзину S3, вы можете выбрать корзину из этого раскрывающегося списка. Если вы используете балансировщик нагрузки перед вашими инстансами EC2, вы должны выбрать его. В противном случае введите URL своего сайта.

Вам нужно будет ввести имя своего сайта для идентификатора Origin, который используется только для его идентификации в CloudFront. При желании вы также можете настроить собственные заголовки, которые CloudFront будет отправлять на ваш сайт при выполнении запроса на вытягивание.

По умолчанию используется как HTTP, так и HTTPS. Вероятно, вам следует перенаправить весь трафик на HTTPS. Убедитесь, что вы не выбрали «Только HTTPS», так как это приведет к тому, что весь HTTP-трафик будет пропущен с ошибкой, а не перенаправлен.

Далее вам нужно определить, как вы хотите обрабатывать кэширование. Если вы оставите значение по умолчанию «Использовать заголовки Origin Cache», CloudFront будет использовать заголовки Cache-Control с вашего веб-сервера.

Вы также можете использовать систему настраиваемого поведения CloudFront. В любом случае вам придется вручную защищать маршруты, которые вы не хотите кэшировать — такие вещи, как аутентифицированные страницы пользователей, никогда не должны кэшироваться.

В разделе SSL-сертификат выберите использование пользовательского сертификата SSL от ACM. Выберите сертификат, который вы создали ранее.

Это должна быть вся конфигурация, которая вам понадобится. Нажмите «Создать раздачу». CloudFront потребуется около двадцати минут, чтобы все настроить (необходимо настроить множество периферийных местоположений). Как только это будет сделано, вы должны увидеть, что ваш дистрибутив «Включен».

Однако вы пока не сможете получить к нему доступ со своего пользовательского URL. В разделе «Имя домена» скопируйте доменное имя вашего дистрибутива, которое должно выглядеть примерно так:

d1b8r4efty9gim.cloudfront.net

Вы захотите добавить это как запись CNAME в свой DNS. Для этого требуется два поиска DNS, поэтому, если вам нужна производительность, вы можете переключиться на собственный DNS-сервис AWS Route 53, который предлагает возможность создавать записи «Псевдоним», которые будут динамически указывать на определенный Ресурс АВС.

Как только ваш DNS обновится, ваш дистрибутив должен быть доступен с вашего собственного доменного имени.

Настройка пользовательского кэширования

Если вы решили использовать пользовательские настройки кэша CloudFront, вам придется добавить дополнительные правила для конкретных маршрутов на вкладке «Поведение».

Если вы хотите предотвратить кэширование пути, введите 0 для максимального значения TTL и TTL по умолчанию. Вы также можете вручную выбрать получение заголовков Cache-Control из источника для определенных путей, даже если вы установили TTL по умолчанию для всего сайта.