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 (デッドレターキュー) にイベントを退避する。リトライ回数と最大イベント保持時間を設定できる。
さらに掘り下げるなら関連書籍が参考になる。