Amazon EventBridge
AWS サービスや SaaS アプリケーションからのイベントをルーティングするサーバーレスイベントバス
何ができるか
Amazon EventBridge は、AWS サービス、SaaS アプリケーション、カスタムアプリケーションからのイベント (出来事の通知) を受け取り、ルールに基づいて適切なターゲット (処理先) にルーティングするサーバーレスのイベントバスサービスです。たとえば、EC2 インスタンスの状態変化、S3 へのファイルアップロード、定期的なスケジュールなどのイベントをトリガーとして、Lambda 関数や SQS キューなどに処理を振り分けられます。
どのような場面で使うか
AWS リソースの状態変化に応じた自動処理、定期的なバッチ処理のスケジューリング、SaaS アプリケーション (Zendesk、Datadog など) との連携、マイクロサービス間のイベント駆動アーキテクチャ、カスタムイベントによるアプリケーション連携など、イベント駆動型のシステム構築に利用されています。 この分野について体系的に学びたい方は、関連書籍 (Amazon) も参考になります。
身近な例え
空港の管制塔に例えるとわかりやすいでしょう。管制塔 (EventBridge) は、さまざまな航空会社 (イベントソース) からの飛行情報 (イベント) を受け取り、行き先 (ルール) に応じて適切な滑走路 (ターゲット) に誘導します。管制塔がなければ、各航空会社が個別に連絡を取り合う必要がありますが、管制塔が一元管理することで効率的に運用できます。
EventBridge とは
Amazon EventBridge は、イベント駆動アーキテクチャを構築するためのサーバーレスイベントバスです。イベントバスとは、イベントの発行者と受信者を仲介する基盤のことです。EventBridge は CloudWatch Events の後継サービスであり、AWS サービスからのイベントに加え、SaaS パートナーやカスタムアプリケーションからのイベントも統合的に扱えます。
ルールとターゲット
EventBridge のルールは、イベントのフィルタリング条件とターゲット (配信先) の組み合わせです。イベントパターンを定義して、特定の条件に一致するイベントだけを処理できます。たとえば、EC2 インスタンスが停止したイベントだけを Lambda 関数に送る、といったルールを設定できます。1 つのルールに最大 5 つのターゲットを設定でき、Lambda、SQS、SNS、Step Functions など 20 以上のターゲットに対応しています。
スケジュール機能
EventBridge Scheduler は、定期的なタスクの実行をスケジュールする機能です。cron 式や rate 式で実行間隔を指定し、Lambda 関数や Step Functions を定期実行できます。たとえば、毎日午前 3 時にデータバックアップを実行する、5 分ごとにヘルスチェックを行うといったスケジュールを設定できます。タイムゾーンの指定や、1 回限りのスケジュール実行にも対応しています。
はじめかた
EventBridge を使い始めるには、EventBridge コンソールでルールを作成します。イベントソース (AWS サービスまたはスケジュール) を選択し、イベントパターンを定義します。ターゲットとして Lambda 関数や SQS キューを指定すれば、条件に一致するイベントが自動的にターゲットに配信されます。スケジュールルールを作成すれば、cron ジョブのような定期実行も簡単に設定できます。
注意点
- カスタムイベントの発行は 100 万件あたり 1 USD 程度と低コストだが、大量のイベントを発行する場合はコストを見積もること
- イベントパターンの記述を誤ると、意図しないイベントがターゲットに配信される場合があるため、テスト環境で十分に検証すること
- AWS サービスからのデフォルトイベントバスへのイベントは無料で利用できる
さらに詳しく知りたい方は、関連書籍 (Amazon) で理解を深められます。