EventBridge
AWS のサーバーレスイベントバスで、イベント駆動アーキテクチャの中核を担う
EventBridge とは
Amazon EventBridge は、AWS のサーバーレスイベントバスで、イベント駆動アーキテクチャの中核を担う。AWS サービス、SaaS、カスタムアプリケーションからのイベントをルールベースでルーティングする。
EventBridge vs SNS vs SQS
EventBridge と 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 (デッドレターキュー) にイベントを退避する。リトライ回数と最大イベント保持時間を設定できる。
さらに掘り下げるなら関連書籍が参考になる。
この記事は役に立ちましたか?
関連用語
SNS と SQS
AWS のメッセージングサービスで、SNS がパブリッシュ/サブスクライブ、SQS がメッセージキューを提供する
Lambda
AWS のサーバーレスコンピューティングサービスで、コードをイベント駆動で実行する
イベント駆動アーキテクチャ
イベントの発行と購読を中心にシステムを構成し、サービス間の疎結合と非同期処理を実現するアーキテクチャスタイル
イベントソーシング
状態の変更をイベントとして記録し、イベントの再生で現在の状態を復元する設計パターン
トランザクショナルアウトボックス
データベースへの書き込みとイベント発行を原子的に行うための分散システムパターン
Pub/Sub
発行者と購読者が直接通信せず、メッセージブローカーを介して非同期にメッセージを交換するパターン