サーバーレスイベントバスのAmazon EventBridge
Amazon EventBridgeとは
Amazon EventBridgeは、独自のアプリケーション、SaaS、AWSサービスからアプリケーションデータを接続するサーバーレスイベントバスです。イベントの取り込みと配信、セキュリティ、承認、エラー処理が自動的に行われるため、イベント駆動型アプリケーションを簡単に構築することができます。
※本記事で度々登場する「イベント」とは、カスタマーサポートチケットのステータスの変更など、システムの状態が変わったことを示す信号のことです。
Amazon Bridgeの利点
SaaSアプリケーションからのデータを接続
Amazon EventBridgeは、サポートされているSaaSアプリケーションからのデータの取り込み、AWSマネジメントコンソールでのネイティブな統合を通して、そのデータをAWSのサービスにルーティングします。以下にSaaSアプリケーションを使用した例を示します。
- Zendesk:カスタマーサービスとサポート用のチケットの管理
- PagerDuty:インシデント対応の処理
- SignalFX:リアルモニタリング
Amazon Bridgeを利用して、顧客独自のシステム、データベース、ワークフローと統合した場合、単体で使用するよりも優れた機能を発揮させることができます。上記の他にネイティブに統合されているアプリケーションの例を以下に示します。
(DataDog、OneLogin、Savyint、Segment 、SugarCRM、Symantec、Whispirなど)
コードを削減
カスタムコードを作成せずにイベントの取り込み、フィルタリング、配信を行うことができるため、アプリケーションどうしを簡単に接続できます。Amazon EventBridgeは、イベントをソースから、AWS Lambda、Amazon Kinesis Data Streamsなど、サポートされている1つまたは複数のAWSのサービスターゲットに自動的にルーティングします。
イベント駆動型アーキテクチャを簡単に構築
Amazon EventBridgeは、イベント駆動型アーキテクチャ(Event-Driven Architecture)の構築プロセスを簡素化します。フィルタリングとAmazon EventBridgeへのパブリッシュは自動的に行われるため、イベントターゲットがイベントを認識する必要がなく、設定も不要です。イベント駆動型アーキテクチャは疎結合かつ分散型のため、開発者の開発時間の短縮や、作業効率とアプリケーションの回復性の向上が可能です。
オペレーションのオーバーヘッドを削減
Amazon EventBridgeには、プロビジョニングやパッチ、管理用のサーバーだけでなく、インストール、メンテナンス、運用するソフトウェアもありません。Amazon EventBridgeは、取り込んだイベント数に応じて自動的にスケーリングします。料金はAWSアプリケーションやSaaSアプリケーションによってパブリッシュされたイベントに対してのみ発生します。Amazon EventBridgeには、可用性とフォールトトレランスが組込まれています。
Amazon EventBridgeの特徴
スキーマレジストリ(プレビュー)
Amazon EventBridgeのスキーマレジストリでは、以下のことができます。
- レジストリにイベントスキーマを格納し、組織の他の開発者たちが簡単に検索してアクセスする
- イベントバスのスキーマの検出を有効にして、イベントのスキーマを自動的に検出し、レジストリに格納する
- 全てのAWSのサービスでスキーマをスキーマレジストリに自動的に表示する
- SaaSパートナーのイベントバスでスキーマの検出を有効にし、統合SaaSアプリケーションのスキーマを表示する
フルマネージドでスケーラブルなイベントバス
Amazon EventBridgeは、イベントを使ってアプリケーションへ接続することを可能にする、サーバーレス、フルマネージドで、スケーラブルなイベントバスです。
SaaSの統合
AWS アプリケーションは、SaaSアプリケーションで生成されるイベントに基づいてアクションを実行できます。
100を超える組込みのイベントソースとターゲット
Amazon EventBridgeは、90を超えるイベントソースや15を超えるターゲットと直接統合されています。
独自のアプリケーションからイベントを送信
Amazon EventBridgeをエンタープライズアプリケーションやマイクロサービスの一元管理イベントバスとして利用できます。独自のアプリケーションからイベントバスに、サービスのPutEvents APIを介してイベントを送信することができます。
イベントフィルタリング
ルールを使用してイベントをフィルタリングできます。
信頼性の高いイベント配信
最大24時間のエクスポネンシャルバックオフによる再試行などの機能が用意され、ターゲットに少なくとも1回のイベント配信を実現します。
AWSのサービスにおけるオペレーションの変更に自動応答
以前のAmazon CloudWatch Eventsの拡張版であるAmazon EventBridgeは、AWSリソースに関する変更を記述したほぼリアルタイムのシステムイベントのストリームを配信します。
スケジュールされたイベント
Unixのcron構文を使って、イベントのスケジュールを設定できます。
モニタリングと監査
Amazon EventBridgeでは、次のことができます。
- Amazon CloudWatchのメトリクスを使ってイベントバスをモニタリングする
- Amazon CloudWatch Logsを使用して、環境内で発生したイベントの保存、モニタリング、分析を行う
- AWS CloudTrailによって、Amazon EventBridge APIに対する呼び出しをモニタリングする
セキュリティとコンプライアンス
Amazon EventBridgeは、AWS IAMと統合されているため、以下のことができます。
- データへのアクセスをユーザーやリソースに許可する権限を制御する
- データへのアクセス方法を制御する
イベントごとに課金
AWSのサービスによって生成されたイベントは無料です。独自のアプリケーションやSaaSアプリケーションによって生成されたイベントに対してのみ料金が発生します。
Amazon EventBridgeのユースケース
カスタマーサポート
カスタマーサポートチケットのステータスの変更をAmazon EventBridgeに送信して自動化されたワークフローをトリガーすることや、機械学習を使って感情分析モデルのトレーニングやデプロイを行うことができます。
(使用例)
- Amazon Sagemakerを使用して、オリジナルのZendeskチケットに顧客満足度スコアを添付する
セキュリティオペレーション
セキュリティイベントをAmazon EventBridgeに送信し、複数のチャンネルにわたる関連するユーザーグループに伝えることができます。
(使用例)
- Whispirコミュニケーションワークフローに脅威検出イベントを含める
- イベントベースのルールを使ってセキュリティシステムレポートの配信を自動化する
ビジネスオペレーション
Amazon EventBridgeを使用して、オペレーションデータへのアクセス、処理、システム間の送信を行うことができます。
(使用例)
- Amazon EventBridgeを使用して、PaperDutyインシデントをAmazon Redshiftデータウェアハウスに接続し、エンジニアリングチームで修復速度や平均的なオペレーション負荷を分析する
アプリケーションのモニタリング
Amazon EventBridgeを使用して、アプリケーションメトリクスのリアルタイムストリームを収集することで、アプリケーションパフォーマンスの変化に迅速に対応することができます。
(使用例)
- DataDogからAmazon EventBridgeに負荷ボリュームのアラートを送信し、予想される負荷の増大に対応できるようにAmazon EC2インスタンスをスケーリングするAWS Lambda関数をトリガーする
ディレクトリ登録
ユーザー情報をAmazon EventBridgeに送信してワークフローをトリガーすることで、ディレクトリ登録プロセスを自動化することができます。
(使用例)
- OneLoginからAmazon EventBridgeに新規ユーザー作成イベントを送信し、新規採用のエンジニアが技術リソースを利用できるようにするAWS Lambda関数に、そのイベントをルーティングする
カスタマーデータの更新
カスタマーリレーションシップマネジメント(CMR)システムでのカスタマーデータの変更を使って、他のシステムのワークフローをトリガーすることができます。
(使用例)
- SugarCMRオポチュニティのステータスが「Closed Won」に変更されたら、Amazon EventBridgeにイベントを送信し、会計システムで請求レコードをプロビジョニングするワークフローをトリガーする
まとめ
本記事では、Amazon EventBridgeの利点や特徴、ユースケースについてまとめました。Amazon EventBridgeは、コードを作成することなく、AWSのサービス、独自のアプリケーション、SaaSアプリケーションのデータの変更にリアルタイムにアクセスできるサービスです。