Amazon EventBridge
AWS サービス、SaaS アプリケーション、カスタムアプリケーションからのイベントをルーティングするサーバーレスイベントバスで、イベント駆動アーキテクチャの中核を担う
概要
Amazon EventBridge (旧 CloudWatch Events) は、イベントの生成元 (ソース) とイベントの処理先 (ターゲット) を疎結合に接続するサーバーレスイベントバスです。AWS サービスのイベント (EC2 インスタンスの状態変化、S3 オブジェクトの作成、CodePipeline のデプロイ結果など)、SaaS パートナーのイベント (Zendesk、Datadog、Auth0 など)、カスタムアプリケーションのイベントをルールに基づいてフィルタリングし、Lambda、SQS、SNS、Step Functions、API Gateway など 20 以上のターゲットにルーティングします。イベントパターンマッチングにより、特定の条件に一致するイベントだけを処理できます。
イベントバスとルールの設計
EventBridge のイベントバスは、イベントが流れるチャネルです。デフォルトイベントバスは AWS サービスのイベントを受信し、カスタムイベントバスはアプリケーション固有のイベントを受信します。パートナーイベントバスは SaaS パートナーのイベントを受信します。ルールは、イベントパターン (JSON 形式のフィルタ条件) またはスケジュール (cron 式) に基づいてイベントをターゲットにルーティングします。イベントパターンでは、イベントのソース、タイプ、詳細フィールドの値でフィルタリングできます。プレフィックスマッチ、サフィックスマッチ、数値範囲、存在チェックなど、豊富なフィルタリング演算子が利用可能です。1 つのルールに最大 5 つのターゲットを設定でき、1 つのイベントを複数のターゲットに同時配信するファンアウトパターンを実現できます。
スケジューラとパイプ
EventBridge Scheduler は、cron 式または rate 式でスケジュールされたイベントを生成する機能です。CloudWatch Events の cron ルールの後継で、より柔軟なスケジューリングが可能です。1 回限りのスケジュール (特定の日時に 1 回だけ実行)、タイムゾーン指定、フレキシブルタイムウィンドウ (指定した時間範囲内でランダムに実行) などの機能があります。EventBridge Pipes は、ソースからターゲットへのポイントツーポイント統合を簡素化する機能です。SQS キュー、Kinesis ストリーム、DynamoDB ストリームなどのソースからイベントを取得し、オプションのフィルタリングとエンリッチメント (Lambda による変換) を経て、ターゲットに配信します。Pipes を使えば、SQS → Lambda → Step Functions のような統合を、Lambda のグルーコードなしで実現できます。
実務での活用パターン
EventBridge の最も一般的な活用は、AWS サービスのイベントに基づく自動化です。EC2 インスタンスが terminated 状態になったら Slack に通知する、GuardDuty が脅威を検出したら自動的にセキュリティグループを変更する、CodePipeline のデプロイが失敗したらチームに通知する、といったパターンです。マイクロサービスアーキテクチャでは、サービス間の通信にイベントバスを使用するイベント駆動パターンが推奨されます。注文サービスが「注文確定」イベントを EventBridge に発行し、在庫サービス、決済サービス、通知サービスがそれぞれ独立してイベントを処理します。Azure の対応サービスは Azure Event Grid で、同様にイベント駆動アーキテクチャを実現します。EventBridge の基礎から応用まで、書籍 (Amazon)で体系的に学べます。