コンテンツに移動
デベロッパー

Eventarc と Pub/Sub によるリージョンとプロジェクトをまたいだイベント ルーティング

2021年12月24日
Google Cloud Japan Team

※この投稿は米国時間 2021 年 12 月 9 日に、Google Cloud blog に投稿されたものの抄訳です。

イベント ドリブンのアーキテクチャでは、あるリージョンやプロジェクトのソースからイベントを読み込んで、別のリージョンやプロジェクトの宛先にルーティングすることがよくあります。Google Cloud で、リージョン間またはプロジェクト間のイベント ルーティングを実装する方法を見てみましょう。

Pub/Sub を直接使用している場合でも、Eventarc を使用している場合でも、Google Cloud では、リージョン間のイベント ルーティングが簡単に行えます。Pub/Sub はメッセージをグローバルにルーティングします。あるリージョンでホストされているアプリケーションがトピックにメッセージをパブリッシュすると、どのリージョンのサブスクライバーでもそのトピックから pull できます。Eventarc では、イベントソースであるリージョンにトリガーを作成し、別のリージョンに宛先を指定することで、リージョンをまたいだイベントのルーティングが可能です。詳しくは、以前投稿した Evantarc のロケーションに関するブログ記事をご覧ください。

プロジェクト間のイベント ルーティングも、Pub/Sub では問題ありません。あるプロジェクトにトピックを作成し、別のプロジェクトからそのトピックにパブリッシュできます。一方、Eventarc を使うと、1 つのプロジェクトでしかイベントをルーティングできません。しかし、Pub/Sub をプロジェクト間のトランスポートとして使用し、Eventarc をプロジェクト内のトランスポートとして使用することで、Eventarc でプロジェクトをまたいでイベントを配信できます。

まとめると、Eventarc には次の 3 つのトリガータイプがあります。Pub/Sub トリガー、Cloud Storage トリガー、Cloud Audit Logs トリガーです。これらのトリガーは対応するイベントを Cloud Run にルーティングします。Evantarc を使って、2 つのプロジェクト間で各イベントタイプをルーティングする方法を見てみましょう。

Pub/Sub

Eventarc を使ってプロジェクト間で Pub/Sub メッセージをルーティングするには、宛先プロジェクトの Pub/Sub トピックを設定し、そのトピックを Pub/Sub トリガーで Cloud Run サービスに接続する必要があります。  そうすることで、ソース プロジェクトの外部サービスまたはユーザーがトピックを直接パブリッシュできるようになります。

https://storage.googleapis.com/gweb-cloudblog-publish/images/pubsubeventarc.max-800x800.max-800x800.png

このアプローチでは、プロジェクト間のトランスポートには Pub/Sub が、プロジェクト内のトランスポートには Eventarc が使用されます。

Cloud Storage

同じ考え方で、Pub/Sub を使ってプロジェクト間で Cloud Storage イベントをルーティングできます。前回同様、Pub/Sub トピックを作成し、宛先プロジェクトの Eventarc を使って Cloud Run サービスに接続します。そして、Cloud Storage の Pub/Sub 通知機能を使って、ソース プロジェクトのバケットから宛先プロジェクトの Pub/Sub トピックへのオブジェクト通知を設定します。

読み込んでいます...

設定には、前述の例と同様に、プロジェクト間のトランスポートに Pub/Sub を使用します。

https://storage.googleapis.com/gweb-cloudblog-publish/images/CloudStorageEventArc.max-700x700.max-700x700.png

Cloud Audit Logs

Cloud Audit Logs は、Eventarc のイベントソースとして 100 以上のサービスにアクセスできます。ロギングシンク機能を使えば、他のプロジェクトの Pub/Sub トピックに監査ログエントリをルーティングできます。この設定では、宛先プロジェクトに Pub/Sub トピックがあり、ソース プロジェクトからそのトピックに送信するログエントリの種類を構成します。

https://storage.googleapis.com/gweb-cloudblog-publish/images/AuditLogsEventArc.max-700x700.max-700x700.png

例えば、以下の形式のログエントリを持つ新しい Compute Engine VM の作成イベントをルーティングしたいとします。

読み込んでいます...

ログシンクを作成してこれらのログエントリをキャプチャし、宛先プロジェクトの Pub/Sub トピックにルーティングできます。

読み込んでいます...

結論

Google Cloud の持つグローバル ネットワークを活用すれば、リージョン間のイベント ルーティングも簡単です。Pub/Sub のグローバルな性質により、プロジェクト間のイベント ルーティングも簡単です。Eventarc は、すぐに使えるプロジェクト間のイベント ルーティングを提供していませんが、プロジェクト間のトランスポート メディアとして Pub/Sub を利用できます。

設定に関する詳細については、GitHub のプロジェクト間のイベントのチュートリアルをご覧ください。また、ご意見やご質問がございましたら、Twitter @meteatamel までご連絡ください。

- デベロッパー アドボケイト Mete Atamel

投稿先