Дистрибутивы и источники CloudFront
Создайте дистрибутив CloudFront, настройте S3 и пользовательские источники HTTP и изучите Origin Access Control для защиты S3.
«Дистрибутивы и источники CloudFront» — бесплатный урок AWS Solutions Architect на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения AWS Solutions Architect, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс AWS Solutions Architect содержит 4 уроков всего.
Что такое Amazon CloudFront
Amazon CloudFront — это глобальная сеть доставки содержимого AWS (CDN), которая кэширует и доставляет содержимое из периферийных точек, распределённых более чем по 400 городам в 90 с лишним странах. Когда пользователь запрашивает содержимое, CloudFront обслуживает запрос из ближайшей периферийной точки, значительно уменьшая задержку по сравнению с получением данных с исходного сервера.
CloudFront предназначен не только для статических файлов: он также ускоряет доставку динамического содержимого, API и потокового видео. Он интегрируется с другими сервисами AWS, такими как S3, ALB, Lambda@Edge, WAF и Shield, поэтому является стандартным уровнем доставки в современных архитектурах AWS.
Дистрибутивы CloudFront
Дистрибутив CloudFront — это основная единица конфигурации. Он определяет один или несколько источников (мест, где хранится содержимое), поведения кэширования (способы кэширования разных путей URL), параметры безопасности и уровни цен. Доступ к содержимому осуществляется через доменное имя дистрибутива (например, d1234abcdef.cloudfront.net) или пользовательский домен (например, cdn.example.com) с использованием записи CNAME или ALIAS.
После создания дистрибутив разворачивается глобально во всех периферийных точках за 10–15 минут. Изменения существующего дистрибутива также распространяются в течение нескольких минут. Исторически существовало два типа дистрибутивов, но сегодня все дистрибутивы используют унифицированный интерфейс конфигурации.
# Create a CloudFront distribution backed by S3
aws cloudfront create-distribution \
--distribution-config '{
"Origins": {
"Quantity": 1,
"Items": [{
"Id": "S3Origin",
"DomainName": "my-bucket.s3.amazonaws.com",
"S3OriginConfig": {"OriginAccessIdentity": ""}
}]
},
"DefaultCacheBehavior": {
"TargetOriginId": "S3Origin",
"ViewerProtocolPolicy": "redirect-to-https",
"CachePolicyId": "658327ea-f89d-4fab-a63d-7e88639e58f6"
},
"Enabled": true,
"Comment": "My S3 distribution",
"CallerReference": "2026-06-20-unique"
}'S3 как источник CloudFront
Использование корзины S3 в качестве источника CloudFront — один из самых распространённых шаблонов. CloudFront получает объекты из S3, кэширует их в периферийных точках и обслуживает последующие запросы из кэша, не обращаясь к S3 повторно. Это снижает стоимость запросов S3, уменьшает задержку для пользователей по всему миру и сокращает объём трафика от S3.
Чтобы обслуживать сайт на основе S3, не нужно делать корзину общедоступной. Вместо этого используйте Origin Access Control (OAC) — современную замену Origin Access Identity (OAI). OAC предоставляет только дистрибутиву CloudFront разрешение на чтение из корзины, сохраняя S3 закрытым, пока CloudFront обслуживает содержимое публично.
# S3 bucket policy granting OAC access to CloudFront
{
'Version': '2012-10-17',
'Statement': [{
'Effect': 'Allow',
'Principal': {
'Service': 'cloudfront.amazonaws.com'
},
'Action': 's3:GetObject',
'Resource': 'arn:aws:s3:::my-bucket/*',
'Condition': {
'StringEquals': {
'AWS:SourceArn': 'arn:aws:cloudfront::123456789:distribution/EDFDVBD6EXAMPLE'
}
}
}]
}Пользовательские источники HTTP/HTTPS
CloudFront также поддерживает пользовательские источники: любые HTTP- или HTTPS-серверы, доступные через интернет, включая экземпляры EC2, Application Load Balancers, конечные точки API Gateway и локальные серверы. Пользовательские источники позволяют CloudFront кэшировать и ускорять динамические приложения и API, а не только статические файлы.
При использовании ALB в качестве пользовательского источника настройте ALB так, чтобы в его группе безопасности принимались только соединения из диапазонов IP CloudFront. Это заставляет весь внешний трафик проходить через CloudFront, позволяя применять правила WAF и завершать TLS-соединения на периферии, а ALB оставлять внутренним для AWS.
Origin Access Control (OAC) и OAI
Origin Access Identity (OAI) изначально использовался для ограничения доступа к корзине S3 только для CloudFront. Это специальное удостоверение пользователя CloudFront, которому предоставлялся доступ в политике корзины S3. OAI по-прежнему работает, но считается устаревшим.
Origin Access Control (OAC) — современная замена OAI. OAC поддерживает все типы корзин S3 (включая S3 в Region AWS China и корзины, зашифрованные с помощью SSE-KMS), использует субъектов-служб IAM для более точного управления и автоматически подписывает запросы к S3 с помощью SigV4. Для новых дистрибутивов всегда используйте OAC вместо OAI.
Политика протокола для пользователей
Политика протокола для пользователей управляет обработкой CloudFront соединений между пользователями (клиентами) и периферийной точкой:
- HTTP и HTTPS: разрешить оба протокола; не рекомендуется для конфиденциального содержимого
- Перенаправлять HTTP на HTTPS: прозрачно перенаправлять запросы HTTP на HTTPS; наиболее распространённый параметр
- Только HTTPS: полностью отклонять соединения HTTP; используйте для строгого принудительного применения TLS
Отдельно политика протокола источника управляет взаимодействием CloudFront с источником: только HTTP, только HTTPS или совпадение с протоколом пользователя. Для источников S3 с OAC CloudFront всегда использует HTTPS.
Пользовательские домены и сертификаты SSL/TLS
Чтобы предоставлять содержимое через cdn.example.com, а не через домен CloudFront, настройте в дистрибутиве альтернативное доменное имя (CNAME) и добавьте сертификат SSL/TLS из AWS Certificate Manager (ACM). Сертификат ACM должен находиться в регионе us-east-1 независимо от того, где ваш дистрибутив обслуживает трафик, поскольку CloudFront — это глобальный сервис, управляемый из us-east-1.
Создайте запись Route 53 типа ALIAS, указывающую на доменное имя дистрибутива CloudFront. CloudFront автоматически предоставляет ваш сертификат для соответствующих запросов SNI.
# Request a certificate in us-east-1 for CloudFront
aws acm request-certificate \
--domain-name cdn.example.com \
--validation-method DNS \
--region us-east-1Ценовые классы
Ценовой класс CloudFront определяет, какие периферийные расположения используются для обслуживания вашего дистрибутива. Более высокие ценовые классы включают более дорогие периферийные расположения, обычно в регионах с более высокой стоимостью пропускной способности:
- Ценовой класс 100: только Северная Америка и Европа (минимальная стоимость)
- Ценовой класс 200: Северная Америка, Европа, Азия, Ближний Восток и Африка
- Ценовой класс All: все периферийные расположения по всему миру (наилучшая производительность, максимальная стоимость)
Используйте ценовой класс 100 для внутренних инструментов или аудитории, ограниченной Северной Америкой и Европой. Используйте ценовой класс All для действительно глобальных приложений, ориентированных на конечных пользователей.
Группы источников и переключение при сбое
Группы источников включают механизм переключения CloudFront на резервный источник. В группе задаются основной и вторичный источники. Если основной источник возвращает определённый код ошибки HTTP, например 500, 502, 503 или 504, CloudFront автоматически повторяет запрос к вторичному источнику.
Переключение источника полезно для аварийного восстановления: храните основной сегмент S3 в us-east-1, а его реплицированную резервную копию — в us-west-2, используя её как вторичный источник. Во время сбоя S3 CloudFront прозрачно переключается на резервный источник, и изменять DNS не требуется. Этот подход дополняет межрегиональную репликацию S3.
Журналы доступа CloudFront
CloudFront может доставлять журналы доступа в сегмент S3, записывая сведения о каждом запросе от пользователя: временную метку, периферийное расположение, код состояния, переданные байты, попадание в кэш или промах, агент пользователя и другие данные. Журналы доставляются пакетами каждые несколько минут.
Используйте журналы доступа для анализа моделей трафика, выявления часто запрашиваемого содержимого, проверки полей, важных для безопасности (IP, источник перехода, агент пользователя), и измерения коэффициента попаданий в кэш. Поле x-edge-result-type показывает, был ли запрос на периферии попаданием, промахом или обновлением попадания RefreshHit.
# Enable access logging on a distribution
aws cloudfront update-distribution \
--id EDFDVBD6EXAMPLE \
--distribution-config '{
...existing config...
"Logging": {
"Enabled": true,
"Bucket": "my-logs-bucket.s3.amazonaws.com",
"Prefix": "cloudfront-logs/",
"IncludeCookies": false
}
}' \
--if-match ETVPDKIKX0DERПериферийные расположения и региональные периферийные кэши
CloudFront использует два уровня инфраструктуры кэширования:
- Периферийные расположения: сотни PoPs по всему миру, расположенные близко к конечным пользователям; они обслуживают кэшированное содержимое с минимальной задержкой
- Региональные периферийные кэши (RECs): 13 более крупных кэшей с длительным временем хранения, расположенных между периферийными расположениями и источниками; они обслуживают содержимое, недостаточно популярное для хранения в небольших кэшах периферийных расположений
Если в кэше периферийного расположения происходит промах, CloudFront проверяет REC, прежде чем обращаться непосредственно к источнику. RECs работают прозрачно — настраивать их напрямую не нужно, — но значительно повышают коэффициент попаданий в кэш для редко запрашиваемого содержимого и снижают нагрузку на источник.
Краткая проверка
Проверьте своё понимание концепций AWS Solutions Architect (SAA-C03) из этого урока.
Итоги урока
В этом уроке вы узнали, что дистрибутивы CloudFront кэшируют содержимое в периферийных расположениях по всему миру, OAC сохраняет сегменты S3 закрытыми, разрешая CloudFront получать к ним доступ, а пользовательские источники поддерживают ALB, API Gateway и любой HTTP-сервер. Сертификаты ACM для CloudFront должны быть созданы в us-east-1. Далее мы рассмотрим поведение кэша и настройки TTL.
Часто задаваемые вопросы
Урок «Дистрибутивы и источники CloudFront» бесплатный?
Да — полный текст урока «Дистрибутивы и источники CloudFront» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс AWS Solutions Architect, подпишись на CoddyKit PRO. Курс AWS Solutions Architect содержит 4 уроков всего.
Чему я научусь в уроке «Дистрибутивы и источники CloudFront»?
Создайте дистрибутив CloudFront, настройте S3 и пользовательские источники HTTP и изучите Origin Access Control для защиты S3. Ты практикуешь AWS Solutions Architect с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать AWS Solutions Architect?
Предыдущий опыт не требуется. AWS Solutions Architect на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Дистрибутивы и источники CloudFront»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке AWS Solutions Architect?
Да. Каждый урок AWS Solutions Architect включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Дистрибутивы и источники CloudFront
- Поведение кэша и настройки TTL
- Подписанные URL, подписанные файлы cookie и географические ограничения
- CloudFront с WAF и Lambda@Edge