コンテンツにスキップ

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. アーキテクチャおよび技術要素

  1. 様々なソース(AWS サービスイベント、独自アプリからの PutEvents API、SaaS 連携等)からイベントバスへイベントが投入される。
  2. イベントルールが、イベントペイロードに基づいてフィルタリングを行う。
  3. マッチしたイベントは、ターゲット(Lambda や SQS、Step Functions など)へ自動的にルーティングされる。
  4. スキーマレジストリでイベントスキーマを管理し、開発者はスキーマに基づく型安全なコード生成が可能。

すべてがサーバーレスで、柔軟かつ拡張性の高いイベント駆動アーキテクチャを構築できる。

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. 設定・デプロイ手順(ハンズオン例)

  1. Amazon EventBridge コンソールで新規ルールを作成。
  2. ルールにイベントパターン(例:{"source": ["aws.ec2"]})を定義し、特定のイベントのみマッチさせる。
  3. ターゲットとして Lambda 関数を指定。
  4. EC2 で特定の状態変化イベント(インスタンス起動など)が発生すると、そのイベントが EventBridge により Lambda へ転送。
  5. Lambda でイベントペイロードを処理し、ログ出力や通知送信などを実行。

8. 試験で問われやすいポイント

8.1 イベントバスの種類と用途

  • デフォルトイベントバス: 同一アカウント内で AWS サービスイベントを受け取る標準バス。
  • カスタムイベントバス: アプリケーション独自イベントを分類・整理可能。マルチテナント環境や分離が必要なケースで有効。
  • パートナーイベントバス: SaaS アプリケーションや外部サービスのイベントを直接受け取るためのイベントバス。

8.2 イベントパターンとルール

  • イベントパターン: イベントの sourcedetail-typedetail フィールドを条件にフィルタリング。
  • ルール: 一つのルールで複数ターゲットを指定可能。マッチしたイベントを並列に複数のターゲットへ送信。
  • 注意点: ルールにはステートレスで、イベントを変換(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 統合やスキーマ管理があり、より包括的。