Amazon CloudFront для вашего технологического стека

Amazon CloudFront — глобальная CDN (сеть доставки контента), созданная для безопасной доставки контента с низкой задержкой.

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

  • Преимущество Edge
  • Функции CloudFront
  • Мощность распределений и происхождения
  • Географические ограничения
  • Мониторинг и отчеты

Преимущество Edge

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

Изображение с сайта https://aws.amazon.com/cloudfront/features

Однако это легко сделать для статического контента, но для динамического контента существует Lambda@Edge. Это функция CloudFront, которая использует Lambda@Edge для выполнения на основе событий CloudFront, что обеспечивает масштабируемость и высокую доступность. Lambda@Edge используется для различных целей -…

  • Безопасность и конфиденциальность веб-сайта
  • Динамические веб-приложения
  • Оптимизация поисковых систем (SEO)
  • Маршрутизация и повторная маршрутизация
  • Отслеживание пользователей и аналитика

Lambda@Edge выполняется в ближайшем региональном пограничном кэше AWS.

Функции CloudFront

В то время как Lambda@Edge обеспечивает более быстрое выполнение кода рядом с пользователем, функции CloudFront позволяют использовать легковесные функции JavaScript непосредственно в граничном расположении. Это дешевле, чем Lambda@Edge, а также быстрее, так как выполняется в самом краевом расположении.

function handler(event) {
    // NOTE: This example function is for a viewer request event trigger. 
    // Choose viewer request for event trigger when you associate this function with a distribution. 
    console.log(JSON.stringify(event,null,2))
    var response = {
        statusCode: 200,
        statusDescription: 'OK',
        headers: {
            'cloudfront-functions': { value: 'generated-by-CloudFront-Functions' }
        }
    };
    return response;
}
Вход в полноэкранный режим Выход из полноэкранного режима

Аналогично работе с консолью функций AWS Lambda, но вы также можете протестировать функции перед их развертыванием и ассоциированием с дистрибутивом CloudFront.

Это упрощает тестирование с различными запросами.

Общие случаи использования функций CloudFront следующие

  • Перезапись URL и перенаправление
  • манипуляции с кэшем
  • манипуляции с заголовками HTTP
  • Авторизация

Мощность дистрибутивов и источников

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

  • Amazon S3
  • Amazon ELB
  • Amazon Mediastore Container
  • Amazon Mediapackage Container

Из них Amazon S3 является наиболее популярным, где статический веб-хостинг S3 безопасно обслуживается Amazon CloudFront. Даже Amplify CLI в категории хостинга предоставляет опцию S3 + CloudFront.

Простота определения контроля доступа в отношении того, какой протокол и методы HTTP разрешены. Шаблон regex также поддерживается для обеспечения необходимой политики кэширования для соответствия шаблону URI запроса.

С каждым из этих распределений мы можем определить поведение кэша, чтобы повысить производительность.

Ранее мы говорили о функциях Lambda@Edge и CloudFront, которые связаны либо с просмотром, либо с запросом-ответом источника.

Распределения CloudFront не все URL удобны для чтения, и чтобы убедиться, что у вас есть хороший пользовательский домен, удобный для чтения, вы можете перенаправить их на это распределение, используя записи CNAME или, если у вас есть пользовательский домен и связанный с ним SSL сертификат, вы можете использовать его, отобразив SSL сертификат в AWS Certificate Manager.
CloudFront хорошо соединяется с Amazon Route53, где вы можете управлять своим доменом, обслуживаемым из дистрибутива CloudFront.

Географические ограничения

Если содержимое вашего сервера через дистрибутивы CloudFront должно быть географически ограничено для пользователей, то CloudFront помогает определить происхождение (фактическое происхождение запроса, а не происхождение CloudFront) и если какие-либо правила гео-ограничений совпадают с происхождением запроса, то они могут быть заблокированы или предоставлен доступ.

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

Если у вас установлены гео-ограничения, вы можете больше сэкономить на биллинге CloudFront, выбирая правильные регионы Edge Locations, где контент может быть кэширован.

Мониторинг и отчеты

CloudFront не только помогает в работе сети доставки контента, но и обладает фантастическими возможностями мониторинга и отчетов. Мы можем установить сигналы тревоги для каждого из распределений, когда запросы пересекают порог, и использовать тему Amazon SNS в качестве адресата для уведомления.

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

Или даже отчеты о ваших лучших рефералах, статистике кэша и популярных объектах, которые были запрошены чаще всего!

Заключение

Это действительно важный сервис AWS, который необходимо включить в ваш технологический стек, где вы можете не только улучшить производительность за счет снижения задержки, но и сделать больше вещей с гео-ограничениями и отчетами.

Оцените статью
devanswers.ru
Добавить комментарий