Открыть сервис

CloudFront Functions

CloudFront Functions — это бессерверная вычислительная среда, предоставляемая Amazon Web Services (AWS) (Amazon Web Services — дочерняя компания Amazon; Meta Platforms Inc. — организация признана экстремистской и запрещена в РФ), которая позволяет выполнять небольшие фрагменты кода JavaScript в точках присутствия (PoP) сети доставки контента (CDN) Amazon CloudFront. Функции предназначены для низколатентной обработки HTTP-запросов и ответов на границе сети, непосредственно перед тем, как контент будет передан конечному пользователю.

Архитектура и принцип работы

CloudFront Functions выполняются на уровне CloudFront Edge Locations — географически распределённых серверов, которые кэшируют и доставляют контент пользователям. В отличие от Lambda@Edge (другого бессерверного сервиса AWS для CloudFront), CloudFront Functions имеют более лёгкую среду выполнения и запускаются на выделенном, изолированном процессоре в каждом Edge Location. Это обеспечивает сверхнизкую задержку — по данным AWS, время выполнения функции составляет менее 1 миллисекунды для типовых сценариев.

Триггеры и точки выполнения

Функции могут быть привязаны к одному из двух событий в жизненном цикле HTTP-запроса:

Важно отметить, что CloudFront Functions не могут быть привязаны к событиям на стороне источника (Origin Request и Origin Response). Для этих сценариев используется Lambda@Edge.

Возможности и ограничения

CloudFront Functions предоставляют ограниченный, но целенаправленный набор возможностей, оптимизированный для простых манипуляций с HTTP-запросами и ответами.

Поддерживаемые операции

Ограничения

Сравнение с Lambda@Edge

CloudFront Functions и Lambda@Edge — два бессерверных сервиса AWS для обработки запросов на границе сети. Они имеют разную архитектуру и сценарии применения.

ХарактеристикаCloudFront FunctionsLambda@Edge
Среда выполненияJavaScript (ES5.1/ES6), изолированный процессорNode.js, Python, Go, Java, .NET, Ruby
Время выполнения< 1 мс (типовое)До 5 секунд (запрос) / 30 секунд (ответ)
Размер кодаДо 10 КБДо 50 МБ (включая слои)
Память2 МБ128–3008 МБ
Доступ к сетиНетДа (VPC, внешние API, базы данных)
ТриггерыViewer Request, Viewer ResponseViewer Request/Response, Origin Request/Response
ЦенаЗначительно нижеВыше (зависит от времени выполнения и памяти)
СложностьНизкая (простая настройка)Средняя/высокая (требуется IAM-роли, управление версиями)

Вывод: CloudFront Functions подходят для задач, требующих сверхнизкой задержки и простоты, таких как редиректы, манипуляция заголовками и A/B-тестирование. Lambda@Edge используется для более сложных сценариев — проверка подлинности, динамическая генерация контента, взаимодействие с базами данных.

Применение

CloudFront Functions применяются в широком спектре задач, где требуется быстрая обработка запросов на границе сети.

Разработка и управление

Функции создаются и управляются через консоль AWS Management Console, AWS CLI, SDK или Infrastructure as Code (например, AWS CloudFormation, Terraform). Процесс разработки включает:

  1. Написание кода: создание JavaScript-функции, которая экспортирует объект handler, принимающий аргумент event (содержащий поля request или response).
  2. Тестирование: встроенный редактор в консоли AWS позволяет тестировать функции с образцами запросов.
  3. Публикация: после создания функция получает версию. Для использования в CloudFront необходимо опубликовать версию и привязать её к дистрибутиву.
  4. Мониторинг: метрики выполнения (количество вызовов, ошибки, задержка) доступны в Amazon CloudWatch.

Интересные факты

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →