0Pricing
AWS Solutions Architect · Урок

Дистрибутивы и источники 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 — локальная установка не требуется.

Все уроки этого курса

  1. Дистрибутивы и источники CloudFront
  2. Поведение кэша и настройки TTL
  3. Подписанные URL, подписанные файлы cookie и географические ограничения
  4. CloudFront с WAF и Lambda@Edge
← Назад к AWS Solutions Architect