Amazon EventBridge
Overview
Amazon EventBridgeはイベント駆動型アプリケーションを簡単に構築・管理するサービス。
イベント送信元の状態を監視し、状態変化のイベントを検知して処理同士をイベントでつなぐことが可能。
たとえば、EC2インスタンスの状態が保留中から実行中に変わった状態変化や、バッチ処理やプロセスの完了、CPU使用率の上昇といったリソースの変化が発生したことを契機に別の処理を呼び出す場合に利用する。
また、スケジュールをセットアップすることにより、Cron式のように定期的な処理も実現可能。
EventBridgeを利用するためには以下4つの項目が必要となる。
- イベントソース
- イベントバス
- ターゲット
- ルールの設定
以前のサービス名はCloudWatch Eventsだった。
イベントソース
- イベントの送信元であるAWS Lambda、Amazon SQS、Amazon SNSなどのAWSサービス
- Python、Node.js、Java、Goなどの開発言語で作られた独自アプリケーション。
- AWSのパートナー企業が提供していSaaSアプリケーション
イベントバス
イベントの受け口のことを指す。
ターゲット
イベントが送信され、各サービスで送られてきたイベントを処理する場所のこと(AWSサービス)を指す。
ルールの設定
イベントを検出するためのパターン定義を設定する。
イベントを検出するためにはイベントパターンとスケジュールのルールタイプがある。
イベントパターンとは、定義したイベントルールとイベントが一致したときに実行されるルールで、EventBridgeで指定されたターゲットにイベントを送信する。
スケジュールとはCron式によって特定の時刻に実行するパターンとレート式によって決められた周期(たとえば10分おき)に実行するパターンのことを言う。
Amazon EventBridge 利用用途
AmazonSQSなど、それぞれのサービスに対して同じメッセージを送信しなければならない場合、既存アプリケーション側の負担が大きくなる。
そこで、メッセージを伝搬してくれる別のサービスを組み合わせる案があります。
もし、そういった拡張性を前提に設計する場合は、図5.9のように、Amazon EventBridgeを組み合わせられます。Amazon EventBridgeはイベントバスとして利用でき、幅広くメッセージを後続に伝搬できるサービス。
このように拡張性を持たせることもできます。
サードパーティーのシステム監視製品と連携して、システムの異常を知らせる
サードパーティーのシステム監視製品・モニタリングサービスでAWS上のシステムのシステムのスローダウンや異常を検知しイベントを発生させ、EventBridgeを経由させることでLambdaやAmazon SNSでSlackやメールに通知することが可能になります。
データ分析において定期的なバッチ分析を行う
処理をイベントに対応して実行したり、一定の時間間隔で実行できます。
たとえば、5分おきにAmazon Sagemakerなどの機械学習エンジンを用いて、顧客の来場者数の予測や購買している商品の分析をし、関係者に通知・ダッシュボードへ表示する。
ま た、顧客の来場者数に閾値を設け、閾値を下回ると「イベント」として他システムに連携し、顧客に購買を促すようなメールやクーポンを送付することも可能。
AWS上のシステムにおけるセキュリティイベントを通知する
AWS WAFやGuardDutyなどのAWS上で稼働する各種セキュリティ関連サービスからセキュリティに関するイベントをEventBridgeに集約する。
セキュリティイベントが発生した際にはLambdaなどを通じて通知することも可能。
ワークフローの起点とする
たとえばActiveDirectoryにユーザー登録が行われた際に、EventBridgeにイベントを送信しStep Functionsなどを実行することで、次のような業務上でルーティン化されたワークフローの実行が可能になる。
- ユーザーにメールを送信する。
- 社内システムへの登録作業をLambdaで行う
- 上長に承認メールを送信する
疎結合化ができる
システムの疎結合化とは、システムを安定稼働させるために、システム同士のつながりを弱くする設計のこと。
現在、さまざまなITシステムは、オープン系といい、数台~数十台のサーバが連携しあって1つのシステムを構築しています。
それぞれのサーバの、さまざまなプログラムが複雑に連携することで、大規模なシステムの処理が成り立っています。そのような場合、1つのプログラムに問題が発生すると他のプログラムの処理も止まってしまい、場合によってはシステム全体が停止してしまう、ということも珍しくありません。そのようなことを防ぐために、システムの複雑さを切り離す必要があります。このように、システムの複雑さを切り離すことを、疎結合化といいます。
Cloudwatch Eventsとの違い
Amazon EventBridgeより前に、AWSではCloudwatch Eventsというサービスが利用可能だった。
そもそもAmazon EventBridgeは、CloudWatch Eventsをベースに構築された、CloudWatch Events発展版のサービス。
したがって、CloudWatch EventsよりもAmazon EventBridgeのほうが、機能が増えており、ユーザーとしては使いやすくなっ ている。
CloudWatch Eventsは、AWS内のイベントや、cron機能による定時イベントのみ、取り扱うことが可能でした。一方で、Amazon EventBrideは、AWS以外のSaaS製品で発生したイベントについても、取り扱うことが可能になりました。
たとえば、AWSと連携が可能なシステム監視サービスである、DatadogやNewRelicといたサードパーティの製品とも連携が可能になっています。