Eventarc のロケーションを詳しくご紹介
Google Cloud Japan Team
※この投稿は米国時間 2021 年 10 月 26 日に、Google Cloud blog に投稿されたものの抄訳です。
Eventarc の新しいロケーション
今年の 8 月、Google は Eventarc のロケーションの追加について発表しました(具体的には、17 の新しいリージョンと、6 つの新しいデュアルリージョンとマルチリージョン)。これにより、Eventarc のロケーション数は 30 を超えました。ロケーションの一覧については、Eventarc のロケーション ページをご覧いただくか、gcloud eventarc locations list を実行してご確認ください。
Eventarc のロケーションとは
Eventarc のロケーションとは通常、Eventarc トリガーが作成される単一のリージョンを指します。ただし、トリガーのタイプによっては、ロケーションが複数のリージョンになることもあります。
Pub/Sub トリガーは、シングルリージョンのロケーションのみをサポートします。
Cloud Storage トリガーは、シングルリージョン、デュアルリージョン、マルチリージョンのロケーションをサポートします。
Cloud Audit Logs トリガーは、シングルリージョンのロケーションと特別な global リージョンをサポートします。
トリガーのロケーションを詳しく確認する前に、Eventarc に関連する他のロケーションを見てみましょう。
Eventarc に関連する他のロケーションについて
トリガーは、イベントソースとイベント ターゲットを接続します。
イベントソース、イベント ターゲット、トリガーにはそれぞれ独自のロケーションがあります。これらのロケーションは、一致する必要がある場合もあれば、異なっても問題ない場合もあります。
以下は、europe-west1 リージョンのバケットから Cloud Storage イベントを europe-west1 リージョンにあるトリガーで、us-central1 リージョンの Cloud Run サービスに接続する例です。
多くの場合、イベントソースのロケーションを制御することはできません。上記の例では、Cloud Storage バケットは europe-west1 リージョンにあります。これは、作業に必要なロケーションであり、トリガーのロケーションに影響を与えます(これについては後述します)。
イベント ターゲットのロケーションとは、イベントの接続先のサービスのリージョンです。Cloud Run サービスのデプロイ時に、サポートされているリージョンから 1 つ選択することができます。通常、レイテンシやデータの局所性の理由から、イベントソースと同じリージョンにする必要があります(ただし、これは厳密には要件ではありません)。上記の例では、イベントソース(バケット)は europe-west1 にありますが、イベント ターゲット(Cloud Run サービス)は --destination-run-region フラグで指定されている us-central1 にあります。
トリガーのロケーションは、イベントソースのロケーションによって決まりますが、トリガーのタイプにも関係します。これは --location フラグで指定されます。それでは、各トリガーのタイプのロケーションについて詳しく見ていきましょう。
Pub/Sub トリガーのロケーション
Pub/Sub トリガーでは、Pub/Sub トピックをイベント ターゲットに接続します。Pub/Sub トピックはグローバルであるため、シングルリージョンに関連付けることはできません。ただし、Pub/Sub トリガーを作成する際は、以下のように --location フラグを使用してリージョンを指定する必要があります(Eventarc トリガーはリージョン内に存在する必要があるため)。
ロケーションを指定することで、Eventarc は自動的に Pub/Sub のジオフェンス機能を設定し、指定したロケーションでのみイベントが持続されるようになります。前述のとおり、通常はトリガーと Cloud Run サービスに同じリージョンを選択して、低レイテンシとデータの局所性を実現します(ただし、必須ではありません)。また、リージョンの Pub/Sub サービス エンドポイントを使用してトピックに公開することで、すべてのデータがシングルリージョンにとどまるようにすることもできます。
Cloud Storage トリガーのロケーション
Cloud Storage トリガーでは、Cloud Storage バケットをイベント ターゲットに接続します。Cloud Storage バケットは、シングルリージョン(例: europe-west1)、デュアルリージョン(例: eur4)、マルチリージョン(例: eu)のいずれかのロケーションに存在できます。バケットのロケーションによってトリガーのロケーションが決まり、それらは一致する必要があります。最初のトリガーの例では、europe-west1 というシングルリージョンのロケーションのバケットが対象でした。以下は、別のトリガーの例であり、eu マルチリージョン ロケーションのバケットから Cloud Storage イベントを接続します。location フラグがバケットのリージョンと一致している点に注意してください。
バケットのリージョンとトリガーのリージョンが一致しない場合は、エラーが表示されます。
Cloud Audit Logs トリガーのロケーション
Cloud Audit Logs トリガーでは、監査ログを出力するイベントソースをイベント ターゲットに接続します。イベントソースのロケーションによって、トリガーのロケーションが決まります。これは通常シングルリージョンですが、特別なグローバル リージョンが必要になる場合もあります。
たとえば、監査ログトリガーを使用して europe-west1 リージョンのバケットから Cloud Storage イベントを読み取る場合、同じリージョンにトリガーを作成します。なお、監査ログにはバケットによるフィルタ機能がないため、europe-west1 リージョンのすべてのバケットに一致することになりますので注意が必要です。
一方で、eu などのデュアルリージョンまたはマルチリージョンのバケットに一致させる場合、監査ログのトリガーはシングルリージョンまたは global リージョンしかサポートしていないため、グローバル ロケーションでトリガーを作成します。これは、世界中のすべてのリージョンのバケットに一致することになる点に注意が必要です。
Cloud Storage イベントを読み取る場合は、ネイティブの Cloud Storage トリガーの方がはるかに良い選択肢であることがこの例からもおわかりいただけるかと思いますが、ここでは監査ログのグローバルなトリガーが必要となる場合の一般的な例を示しています。
Eventarc のロケーションについての詳しい説明は以上になります。ご質問やご意見がございましたら、お気軽に Twitter で @meteatamel までお寄せください。
-デベロッパー アドボケイト Mete Atamel