Amazon EventBridge

# Amazon EventBridge

https://d1.awsstatic.com/webinars/jp/pdf/services/20200122_BlackBelt_EventBridge.pdf

##  EventBridge とは

  • ユースケース
    • あるアプリケーションで複数のコンポーネントにまたがる処理を行うアプリケーションがあるとする。モノリシックなアプリの場合は良かったが、パフォーマンスのためにコンポーネントを非同期で処理させるようになった。ここのアプリケーション間をつなぐ処理をEventBridgeは担う。これにより、アプリケーション間の処理を担ってくれるようになる。アプリケーションの入り口のコンポーネントが受付をしたというレスポンスだけを返し、それ以外はEventBridge から各アプリに投げるようにする。
  • イベントバスの導入
    • 大元のコンポーネントはリクエストを受け取った後に、受け取ったという返答をクライアントに返す。もらったリクエスト自体はイベントバスに放り込み、イベントバスがPub/Sub を行う。
    • イベントバスはPush 型で非同期に動き、一度に単一のメッセージを処理する。

 

## Amazon EventBridge とは

  • 統合に必要な、「Point to Point」の実装を取り除く
  • シンプルなプログラミングモデルを提供する
  • AWS サービスと SaaS アプリケーションの統合
  • フルマネージド

 

 

  • イベントバス
    • AWSサービスからの受け取り -> デフォルトイベントバス
    • 独自のアプリケーションからの受け取り -> カスタムイベントバス
    • SaaS アプリケーション(パートナー)からの受け取り -> パートナーイベントバス

 

## SNS EventBridge で何が違うのか。

昨日感データ連携方法としてはSNS で実装するパターンも考えられる。

https://tech-athagi.hatenablog.jp/entry/2020/03/16/224553

Subscriber が増えた場合SNSの設定を書き換える必要がある。一つの部署で完結するアプリケーション連携であれば設定を変更して終わりだが、部署間をまたがる連携をしたい場合は、いちいち多部署に依頼をしなければならなくなる。なので多部署から発火されたイベントは自部署のイベントバスに飛ばすようにすることで変更点を自部署の中で修正することができるようになる。

 

## CloudWatch Events と何が違うのか。

EventBridgeのデフォルトイベントバスは CloudWatch Events の延長線上にあるサービス。

 

## アーキテクチャ

  • 概要

発火元 -> (パートナーイベントソース) -> イベントバス -> ルール -> ターゲット

  • イベント
    • 状態が変化した時にトリガーされる
    • AWS サービスから直接トリガー
    • Cloud Trail が状態の変化をキャッチした時にトリガー(Cloud Trail がポーリングするためラグが発生する)
    • CloudWatch アラームのイベント
    • カスタムイベントとして送信した時
    • SaaS アプリケーションから送信された時
  • ルール
    • どんなイベントを送信するのか
      • イベントパターン
      • スケジュールパターン
    • 対象のイベントバス
    • 対象のターゲット
    • コンテンツベースでのフィルタリング
      • イベントのJSONの中身を見てフィルタリング
        • 前方一致
        • 例外条件
        • 数値比較
        • フィールドの存在性
  • アクセス制御
    • イベントバスごとに他のアカウントからのアクセス制御を許可できる(SQSも同じ、イベントバスコンポーネントで制御)
    • リソースベースポリシー(ターゲット側のサービスで制御)
    • IAMポリシーで制御
  • Schema Registry & Schema Discovery
    • EventBridge でやり取りされるデータのスキーマをコンソールから確認可能
    • Code Bindings

 

## SaaS アプリケーションとの連携

  • 連携方法としては以下(いずれも受け取った後にイベントバスへ通知)
    • SaaS からのPush 通知を受け取る
    • SaaS の状態変化をポーリング
    • EventBridge で連携

 

## 雑感

イメージとしてはCloudWatch Events SNS より広範囲(他のアカウントや他部署)との連携をしたい時に使われるサービス。

他のSaaS アプリケーションと連携したい場合でパートナーイベントバスとして登録されている場合は設定するだけでSaaS アプリケーションのイベントがイベントバスという抽象的な形で提供されるようにできるので便利。

CloudWatch Events を切り出したサービスということもあり、何かを発火することに特化しているサービス、とはいえCloudWatch Event が今後なくなっていくというわけでもない。

 

EventBridge SNSはどちらもイベント駆動型のサービスである。使い分けとしてはEventBridge SaaSパートナーや他のAWSサービスとの連携の時に利用する、SNSは独自のアプリケーション同士の連携でメッセージのフォーマットから規定したい場合に利用するという感じになるらしい。

https://aws.amazon.com/jp/eventbridge/faqs/