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

Amazon EventBridge

Amazon EventBridge — это бессерверный сервис событийной шины (event bus), предоставляемый Amazon Web Services (AWS — организация, осуществляющая деятельность на территории РФ, подчиняющаяся законодательству США и ЕС; не является запрещённой организацией в РФ), предназначенный для создания событийно-ориентированных архитектур (event-driven architectures, EDA). Сервис позволяет принимать, фильтровать, трансформировать и маршрутизировать события от различных источников (сервисы AWS, сторонние SaaS-приложения, собственные приложения пользователя) к целевым обработчикам (AWS Lambda, Amazon SQS, Amazon SNS, AWS Step Functions, HTTP-эндпоинты и другие). EventBridge является эволюционным развитием сервиса Amazon CloudWatch Events, предлагая расширенную функциональность, включая поддержку схем событий, интеграцию с партнёрами и возможность создания собственных шин событий.

История и развитие

Сервис был анонсирован 11 декабря 2019 года на конференции AWS re:Invent. Он стал частью стратегии AWS по продвижению событийно-ориентированных архитектур и упрощению интеграции между микросервисами, SaaS-платформами и собственными приложениями.

Ключевые вехи развития:

  • 2019 — запуск EventBridge с поддержкой интеграции с 12 партнёрскими SaaS-сервисами (например, Datadog, PagerDuty, Zendesk).
  • 2020 — добавление возможности создания собственных шин событий (custom event buses) и поддержка схем событий (event schemas) с возможностью генерации кода для различных языков программирования.
  • 2021 — введение поддержки API-дестнейшенов (API destinations) для отправки событий на любые HTTP-эндпоинты, а также запуск EventBridge Pipes — сервиса для упрощённой интеграции между источниками и приёмниками событий.
  • 2022 — расширение функциональности фильтрации событий (content-based filtering) и добавление поддержки репликации событий между регионами AWS.
  • 2023 — запуск EventBridge Scheduler — сервиса для планирования выполнения задач по расписанию, интегрированного с EventBridge.

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

Событие (Event)

Событие в EventBridge представляет собой структурированный JSON-объект, описывающий изменение состояния или действие. Каждое событие содержит обязательные поля: version (версия формата), id (уникальный идентификатор), detail-type (тип события), source (источник события), account (идентификатор аккаунта AWS), time (время возникновения), region (регион AWS), resources (список затронутых ресурсов), detail (полезная нагрузка события в формате JSON).

Шина событий (Event Bus)

Шина событий является центральным элементом маршрутизации. EventBridge поддерживает три типа шин:

  • Шина по умолчанию (default event bus) — автоматически создаётся в каждом аккаунте AWS и принимает события от сервисов AWS, а также от партнёрских SaaS-приложений.
  • Пользовательская шина (custom event bus) — создаётся пользователем для приёма событий от собственных приложений или от других аккаунтов AWS.
  • Партнёрская шина (partner event bus) — создаётся для интеграции с конкретным SaaS-партнёром, предоставляющим события.

Правила (Rules)

Правила определяют, какие события должны быть обработаны и куда они должны быть направлены. Каждое правило состоит из:

  • Шаблона события (event pattern) — фильтра, который сопоставляет события по определённым критериям (например, source, detail-type, поля в detail). Шаблон может быть простым (точное совпадение) или сложным (с использованием префиксов, суффиксов, числовых диапазонов, логических операторов).
  • Цели (targets) — одного или нескольких обработчиков, которым будет отправлено событие, удовлетворяющее шаблону. Поддерживаемые цели включают: AWS Lambda, Amazon SQS, Amazon SNS, AWS Step Functions, Amazon Kinesis Data Firehose, AWS Systems Manager, Amazon ECS, API-дестинейшены, а также другие шины событий (в том числе в других аккаунтах).

Схемы событий (Event Schemas)

EventBridge автоматически собирает и хранит схемы событий (их структуру в формате JSON Schema) от проходящих через шину событий. Пользователь может просматривать схемы, искать события по типу и источнику, а также генерировать код для работы с событиями на различных языках программирования (Java, Python, TypeScript, Go, C#). Это упрощает разработку обработчиков, так как разработчик может использовать типизированные классы событий.

API-дестинейшены (API Destinations)

API-дестинейшены позволяют отправлять события на любые внешние HTTP-эндпоинты (например, REST API сторонних сервисов). Для этого необходимо настроить подключение (connection), которое определяет способ аутентификации (базовая, OAuth2, API-ключ) и целевой эндпоинт. API-дестинейшены поддерживают настройку повторов (retry) и политик обработки ошибок.

EventBridge Pipes

EventBridge Pipes — это отдельный сервис, предназначенный для упрощения интеграции между источниками и приёмниками событий. Он позволяет задать источник (например, Amazon SQS, Amazon DynamoDB Streams, Amazon Kinesis), применить фильтрацию, обогащение (enrichment) и трансформацию событий, а затем отправить их в целевую систему. Pipes автоматически управляет масштабированием и обработкой ошибок, что делает его удобным для создания ETL-подобных пайплайнов.

EventBridge Scheduler

EventBridge Scheduler — это сервис для планирования выполнения задач по расписанию. Он позволяет создавать расписания (schedules) с различными интервалами (один раз, по расписанию cron, с фиксированной частотой) и связывать их с целевыми сервисами (AWS Lambda, Amazon SQS, Amazon SNS, AWS Step Functions, API-дестинейшены). Scheduler интегрирован с EventBridge и может использовать его правила для более сложной логики.

Применение

Amazon EventBridge широко используется для построения событийно-ориентированных архитектур в следующих сценариях:

  • Интеграция микросервисов — EventBridge позволяет микросервисам обмениваться событиями, не зная друг о друге напрямую (слабая связанность). Сервис публикует событие в шину, а другие сервисы подписываются на него через правила.
  • Реагирование на изменения в инфраструктуре AWS — EventBridge может отслеживать события от сервисов AWS (например, создание EC2-инстанса, изменение состояния Load Balancer, завершение задачи ECS) и запускать автоматические действия (например, отправка уведомления, вызов Lambda-функции для обработки).
  • Интеграция с SaaS-приложениями — EventBridge поддерживает интеграцию с десятками партнёрских SaaS-сервисов (например, Datadog, PagerDuty, Zendesk, Shopify, Twilio). Это позволяет реагировать на события из этих систем (например, новый тикет в Zendesk) в рамках архитектуры AWS.
  • Обработка бизнес-событий — приложения могут публиковать бизнес-события (например, «заказ создан», «платёж подтверждён») в EventBridge, а другие сервисы могут обрабатывать их, запуская цепочки действий (например, обновление базы данных, отправка email, запуск рабочего процесса Step Functions).
  • Создание пайплайнов данных — с помощью EventBridge Pipes можно организовать потоковую обработку данных из DynamoDB Streams, Kinesis или SQS, с фильтрацией, обогащением и отправкой в целевые системы (например, S3, Lambda, OpenSearch).
  • Планирование задач — EventBridge Scheduler используется для выполнения периодических задач (например, ежедневная очистка логов, еженедельная генерация отчётов, запуск резервного копирования).

Ограничения и особенности

  • Региональность — EventBridge является региональным сервисом. События не передаются между регионами автоматически, но можно настроить репликацию событий с помощью правил и API-дестинейшенов.
  • Квоты и лимиты — существуют ограничения на количество правил (300 на аккаунт на регион), количество целей в правиле (5), размер события (256 КБ), частоту публикации (до 10 000 событий в секунду на шину по умолчанию, возможно увеличение по запросу).
  • Стоимость — оплата взимается за количество опубликованных событий (1 миллион событий в месяц — бесплатно), за количество правил (1 миллион правил-событий в месяц — бесплатно) и за использование API-дестинейшенов (запросы и объём данных). Плата за хранение схем событий не взимается.
  • Гарантии доставки — EventBridge не гарантирует доставку событий в порядке их возникновения. Для обеспечения порядка следует использовать Amazon SQS FIFO или Amazon Kinesis. Сервис гарантирует доставку «как минимум один раз» (at-least-once), что может привести к дублированию событий. Обработчики должны быть идемпотентными.

Безопасность

EventBridge интегрируется с AWS Identity and Access Management (IAM) для управления доступом. Пользователь может создавать политики, разрешающие или запрещающие публикацию событий, создание правил, отправку событий на цели. Также поддерживается шифрование данных в покое (с помощью AWS KMS) и в транзите (TLS). Для кросс-аккаунтного доступа используются политики на основе ресурсов (resource-based policies).

Сравнение с другими сервисами

  • Amazon SNS — сервис уведомлений, работающий по модели pub/sub. SNS не поддерживает фильтрацию событий на основе содержимого (только по атрибутам), не имеет встроенной поддержки схем событий и интеграции с SaaS-партнёрами. EventBridge предоставляет более богатую функциональность для событийно-ориентированных архитектур.
  • Amazon SQS — очередь сообщений. SQS используется для буферизации и надёжной доставки сообщений, но не поддерживает pub/sub и фильтрацию. EventBridge может отправлять события в SQS, но не заменяет его.
  • AWS Step Functions — сервис для оркестрации рабочих процессов. Step Functions может получать события от EventBridge и запускать последовательности действий, но не является шиной событий.
  • Apache Kafka / Amazon MSK — системы потоковой обработки данных. Kafka предоставляет более низкую задержку, гарантирует порядок сообщений и поддерживает долгосрочное хранение. EventBridge проще в настройке и управлении, но не подходит для сценариев, требующих строгого порядка и высокой пропускной способности.

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

  • EventBridge обрабатывает более 1 миллиарда событий в день в масштабах AWS (данные на 2023 год).
  • Сервис поддерживает более 90 партнёрских SaaS-интеграций.
  • EventBridge Pipes и EventBridge Scheduler были запущены в 2022 году и быстро стали популярными инструментами для автоматизации.
  • Схемы событий могут быть автоматически обнаружены и зарегистрированы в реестре схем (Schema Registry), что позволяет разработчикам использовать их как источник истины для контрактов между сервисами.

Источники

  • Официальная документация Amazon EventBridge (AWS Documentation)
  • «AWS re:Invent 2019: Announcing Amazon EventBridge» (пресс-релиз AWS)
  • «Event-Driven Architecture on AWS» (AWS Whitepaper)
  • «Building Event-Driven Applications with Amazon EventBridge» (AWS Blog)
  • «AWS Well-Architected Framework — Reliability Pillar» (AWS Documentation)

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

На главную BFOmetr →