EventBridge

AWS のサーバーレスイベントバスで、イベント駆動アーキテクチャの中核を担う

AWSイベント駆動

EventBridge とは

Amazon EventBridge は、AWS のサーバーレスイベントバスで、イベント駆動アーキテクチャの中核を担う。AWS サービス、SaaS、カスタムアプリケーションからのイベントをルールベースでルーティングする。

EventBridge vs SNS vs SQS

観点 EventBridge SNS SQS
パターン イベントバス Pub/Sub キュー
フィルタリング コンテンツベース (強力) メッセージ属性 なし
ターゲット 20 以上の AWS サービス Lambda, SQS, HTTP Lambda
スキーマ Schema Registry なし なし
スケジュール ✅ (cron/rate)

イベントの発行

import { EventBridgeClient, PutEventsCommand } from '@aws-sdk/client-eventbridge';

const eb = new EventBridgeClient({});

await eb.send(new PutEventsCommand({
  Entries: [{
    Source: 'myapp.orders',
    DetailType: 'OrderCreated',
    Detail: JSON.stringify({ orderId: '123', amount: 1000, status: 'completed' }),
  }],
}));

イベントパターン (フィルタリング)

{
  "source": ["myapp.orders"],
  "detail-type": ["OrderCreated"],
  "detail": {
    "amount": [{ "numeric": [">=", 1000] }],
    "status": ["completed"]
  }
}

数値比較、プレフィックスマッチ、存在チェックなど、強力なフィルタリングが可能。

スケジュール

EventBridge は cron 式や rate 式でスケジュール実行をサポートする。Lambda のスケジュール実行に使う。

アーキテクチャパターン

注文サービス → EventBridge → 在庫サービス (Lambda)
                           → 通知サービス (Lambda)
                           → 分析サービス (Kinesis)
                           → 監査ログ (CloudWatch Logs)

プロデューサーはイベントを発行するだけ。コンシューマーの追加・削除はルールの変更のみで、プロデューサーのコード変更は不要。

EventBridge はターゲットへの配信が失敗した場合、DLQ (デッドレターキュー) にイベントを退避する。リトライ回数と最大イベント保持時間を設定できる。

さらに掘り下げるなら関連書籍が参考になる。

関連用語