Amazon EventBridge
1. サービス概要¶
Amazon EventBridge は、AWS サービス、SaaS アプリケーション、独自アプリケーションから発生するイベントをストリームとして受け取り、それらを他のターゲットサービスへとルーティングするサーバーレスのイベントバスサービス。
これにより、複雑なイベント駆動型アーキテクチャをシンプルかつスケーラブルに実装可能になり、疎結合で拡張しやすいシステムを構築できる。
主なユースケースとして、
- マイクロサービス間通信
- SaaS アプリとのインテグレーション
- リアルタイムなイベント処理
- ワークフローオーケストレーション
が挙げられる。
2. 主な特徴と機能¶
2.1 イベントバス(Event Bus)¶
EventBridge は、イベントを流通させるためのイベントバスを提供する。
- デフォルトイベントバス: AWS アカウント標準のイベントバス
- カスタムイベントバス: アプリケーション固有のイベント受け取り用
- パートナーイベントバス: SaaS アプリケーションや外部サービスからのイベントを受け取る
2.2 イベントルール(Rules)¶
ルールはイベントパターンや条件に基づいて、受け取ったイベントを特定のターゲットへルーティングする。
ルールはフィルタリング機能を持ち、JSON 形式のイベントペイロードに対して特定のフィールド条件を指定可能。
2.3 ターゲット(Targets)¶
ルールにマッチしたイベントは、
- AWS Lambda
- Amazon SQS
- Amazon SNS
- Amazon Kinesis Streams
- Amazon ECS
- API Destinations
- Step Functions
など、様々なターゲットに送信できる。
これにより、イベントをトリガーとして自動処理や非同期ワークフローを実現できる。
2.4 スキーマレジストリとディスカバリー¶
EventBridge はイベントスキーマをレジストリで管理し、スキーマディスカバリー機能を利用して、実際に流れるイベントからスキーマを自動的に推論・登録可能。
これにより、開発者はイベント駆動アプリケーションのスキーマ管理を容易に行える。
3. アーキテクチャおよび技術要素¶
- 様々なソース(AWS サービスイベント、独自アプリからの PutEvents API、SaaS 連携等)からイベントバスへイベントが投入される。
- イベントルールが、イベントペイロードに基づいてフィルタリングを行う。
- マッチしたイベントは、ターゲット(Lambda や SQS、Step Functions など)へ自動的にルーティングされる。
- スキーマレジストリでイベントスキーマを管理し、開発者はスキーマに基づく型安全なコード生成が可能。
すべてがサーバーレスで、柔軟かつ拡張性の高いイベント駆動アーキテクチャを構築できる。
4. セキュリティと認証・認可¶
EventBridge では、IAM ポリシーとリソースポリシーにより、イベントバスへの PutEvents やルールへのアクセスを制御する。
また、API Destinations 機能を利用する場合には、コネクションを作成し、認証情報(例えば OAuth、API キー等)を安全に扱うことが可能。
- IAM ポリシー: ユーザやロールが EventBridge API(PutRule、PutTargets、PutEvents など)を実行できるか制御。
- リソースベースポリシー: 特定のイベントバスやルールに対するクロスアカウントアクセスを制御。
- 暗号化: イベントは基本的に、暗号化された通信(TLS)上でやりとりされ、センシティブ情報はターゲット先での暗号化や IAM 制御で保護。
5. 料金形態¶
Amazon EventBridge の料金は主にイベント数に基づく従量課金モデル。
- イベント挿入数: PutEvents API で送信されたイベント数や、AWS サービスから発生するイベント数に応じて課金。
- スキーマディスカバリー: スキーマレジストリへの登録やスキーマディスカバリーには一定の無料枠があるが、超過すると課金対象。
6. よくあるアーキテクチャ・設計パターン¶
- マイクロサービス間通信: 個別サービス間を疎結合に保つため、EventBridge にイベントを送信し、別のマイクロサービスがそれをトリガーに動作。
- システム統合: SaaS アプリ(Salesforce、Zendesk など)からのイベントを EventBridge で受け取り、自社アプリへ連動。
- ワークフローオーケストレーション: イベント発生に応じて Step Functions を起動し、複雑なビジネスフローを非同期で実行。
- イベント駆動 CI/CD: コードコミットイベントや ECR イメージプッシュイベントをトリガーにパイプラインを起動。
7. 設定・デプロイ手順(ハンズオン例)¶
- Amazon EventBridge コンソールで新規ルールを作成。
- ルールにイベントパターン(例:
{"source": ["aws.ec2"]})を定義し、特定のイベントのみマッチさせる。 - ターゲットとして Lambda 関数を指定。
- EC2 で特定の状態変化イベント(インスタンス起動など)が発生すると、そのイベントが EventBridge により Lambda へ転送。
- Lambda でイベントペイロードを処理し、ログ出力や通知送信などを実行。
8. 試験で問われやすいポイント¶
8.1 イベントバスの種類と用途¶
- デフォルトイベントバス: 同一アカウント内で AWS サービスイベントを受け取る標準バス。
- カスタムイベントバス: アプリケーション独自イベントを分類・整理可能。マルチテナント環境や分離が必要なケースで有効。
- パートナーイベントバス: SaaS アプリケーションや外部サービスのイベントを直接受け取るためのイベントバス。
8.2 イベントパターンとルール¶
- イベントパターン: イベントの
source、detail-type、detailフィールドを条件にフィルタリング。 - ルール: 一つのルールで複数ターゲットを指定可能。マッチしたイベントを並列に複数のターゲットへ送信。
- 注意点: ルールにはステートレスで、イベントを変換(InputTransformer)したり、一部フィールドのみ抽出したりできる。
8.3 ターゲットとその特性¶
- Lambda: コード実行でイベント処理。サーバーレスで柔軟な処理が可能。
- SQS: 非同期キューイングでイベントをバッファリング。消費者側で後処理。
- SNS: Pub/Sub 型の分配。メール、SMS、HTTP エンドポイントなどへの通知。
- Step Functions: 複雑なワークフロー駆動。イベントをトリガーに状態機械を実行。
- API Destinations: 外部 API への安全な呼び出し(コネクション認証管理付き)。
8.4 スキーマレジストリとディスカバリー¶
- スキーマレジストリ: イベント構造を管理し、スキーマとして保持。 Java、Python、TypeScript などで自動コード生成可能。
- スキーマディスカバリー: 実際に流れるイベントを監視し、自動でスキーマを特定・登録。
試験では
- 「スキーマを自動取得する方法は?」
- 「スキーマ管理でコード生成ができるか?」
などが問われる。
8.5 セキュリティモデル¶
- IAM ポリシー: EventBridge API へのアクセス制御(ルール作成、削除、PutEvents など)。
- リソースポリシー: クロスアカウントアクセスで、他アカウントからイベントバスへイベントを送信可能にする。
- API Destinations 認証: OAuth や API キー認証情報を安全に保管。
8.6 コストモデルと最適化¶
- イベント数管理: 不必要なイベント送信を控え、コスト削減。
- フィルタリングの徹底: ルールで不要なイベントを除外し、ターゲットの呼び出し回数を減らす。
8.7 類似・関連サービスとの比較¶
- Amazon SNS との違い: SNS は Pub/Sub モデルでトピック購読、EventBridge は構造化されたイベントバスとフィルタリングが強力。
- Amazon CloudWatch Events との関係: EventBridge は CloudWatch Events の拡張版であり、SaaS 統合やスキーマ管理が追加されている。
- Amazon SQS との役割分担: EventBridge はイベントルーティング、SQS はキューイング。EventBridge でフィルタリングして SQS へ送れば柔軟なアーキテクチャを構築可能。
8.8 試験で頻出となる具体的な問われ方と答え¶
- Q: EventBridge で SaaS アプリからのイベントを受け取るには?
- A: パートナーイベントバスを使用する。
- Q: クロスアカウントでイベントを受け取るには?
- A: イベントバスにリソースポリシーを設定して他アカウントからのアクセスを許可。
- Q: スキーマディスカバリーの役割は?
- A: フローするイベントから自動でスキーマを推論・登録する。
- Q: ターゲットに Lambda と SQS を同時に設定できるか?
- A: 可能。1 ルールで複数ターゲットを設定できる。
- Q: CloudWatch Events と EventBridge の違いは?
- A: EventBridge は CloudWatch Events の拡張版。SaaS 統合やスキーマ管理があり、より包括的。