NRIネットコム Blog

NRIネットコム社員が様々な視点で、日々の気づきやナレッジを発信するメディアです

カスタムイベントバスによるリージョン間のイベント集約

本記事は NRIネットコム Advent Calendar 2022 5日目の記事です。
🎁 4日目 ▶▶本記事 ▶▶ 6日目 🎄

はじめまして、ネットコムの松元です。

さっそくですがみなさん、EventBridgeは使っていますか?

EventBridgeはAWS内外の様々な環境の変化(イベント)を送受信できるサーバレスなパイプラインサービスです。 例えば「EC2インスタンスが起動した」際にSNSから通知したい場合には、EventBridgeのルールを使って「EC2インスタンスが起動した」イベントを待ち受けしておいて、発生したイベントをSNSトピックに連携することで通知できます。

EventBridgeにはイベントバスという機能もあります。 イベントバスは、AWS上や利用者が作成したアプリケーション、SaaSなどのイベントが通るパイプラインのことです。 ルールはイベントバスに紐づいていて、AWSアカウント作成時から存在しAWS上のイベントが通るイベントバスをデフォルトイベントバスと呼びます。

先ほどの例でも、「EC2インスタンスが起動した」イベントはデフォルトイベントバスを通ってルールに連携されます。

AWSの公式ドキュメントではイベントバスの一般的な用途として、アカウント間でイベントを送受信したり、アプリケーションやSaaSからのデータを受信したりするのに利用することが挙げられています。 このように様々な用途で利用されるイベントバスですが、イベントの送信元によって使用するイベントバスの種類が異なり、AWS上のイベントが通るデフォルトイベントバス、SaaSのイベントが通るパートナーイベントバス、アカウントやリージョンを跨いたイベントやアプリケーションのイベントが通るカスタムイベントバスの4種類があります。

今回はその中でも、リージョンを跨いでイベントを送受信できるカスタムイベントバスの活用方法についてご紹介いたします。

複数リージョンでの構成例

リージョンを跨いだ構成の例として先ほどの例を単純に拡張すると、以下のようなになります。

この構成では、図の通りSNSトピックを各リージョンに作成することになります。しかし、複数のリージョンのSNSトピックから通知を受信するためには各リージョンでサブスクリプションを登録する手間があり、管理も大変です。 各リージョンのルールから1つのリージョンのSNSトピックへイベントを送信できれば手間を省けるのですが、AWSの仕様により以下のようなリージョンを跨ぐ構成にはできません。

カスタムイベントバスを利用した構成

このようなリージョン間でのイベント連携を簡単に実装できるのがカスタムイベントバスです。 カスタムイベントバスを使って先ほどの構成を組み直すと、以下のようになります。

デフォルトイベントバスからイベントを受信してカスタムイベントバスに送信する受信用ルールと、カスタムイベントバスからイベント受信してSNSトピック(他サービスのリソース)に送信する送信用ルールを作成します。 送信用ルールと送信先のリソースはメインのリージョン(東京リージョン)に1つあれば十分なので、SNSトピックのサブスクリプション登録作業も1つのリージョンだけで済みます。

まとめ

  • EventBridgeのカスタムイベントバスを使ってリージョン間でイベントをやり取りできる。
  • カスタムイベントバスを介して単一のリージョンにイベントを集約することで、イベントを受信するリソースを1つにまとめられる。

以上になります。 カスタムイベントバスを利用することで、複数のリージョンで同様のリソースを管理するような煩雑さから解放されます。 みなさんもぜひ活用してみてください。

執筆者松元稿如

AWS認定全冠取得を目指しているが、最近Google Cloudもやらねばと思っている