イベントソース、イベント ターゲット、Eventarc トリガーにはそれぞれ独自のロケーションがあります。これらのロケーションが一致しなければならない場合と、そうでない場合があります。詳細については、Eventarc のロケーションをご覧ください。
ソースのロケーション
多くの場合、イベントソースのロケーションによってトリガーのロケーションが決まります。次の例では、Cloud Storage バケットが europe-west1
リージョンにあるため、トリガーも europe-west1
に配置する必要があります。
gcloud eventarc triggers create trigger-storage \
--destination-run-service=hello \
--destination-run-region=us-central1 \
--location=europe-west1 \
--event-filters="type=google.cloud.storage.object.v1.finalized" \
--event-filters="bucket=my-bucket-in-europe-west1-region" \
--service-account=$PROJECT_NUMBER-compute@developer.gserviceaccount.com
ターゲットのロケーション
イベント ターゲット(Cloud Run サービスなど)をデプロイするときに、サポートされているリージョンをロケーションとして選択します。通常、レイテンシやデータの局所性の理由から、イベントソースと同じリージョンに配置するのが適切です。ただし、これは必須ではありません。上記の例では、イベントソースが europe-west1
にあり、--destination-run-region
フラグでイベント ターゲットのロケーションが us-central1
に指定されています。
トリガーのロケーション
また、作成する Eventarc トリガーのタイプは、--location
フラグで指定されたトリガーのロケーションに影響します。
Cloud Audit Logs
Cloud Audit Logs のトリガーを使用すると、監査ログを出力するイベントソースをイベント ターゲットに接続できます。Cloud Audit Logs トリガーは単一リージョンのロケーションで使用できます。グローバル Eventarc トリガーを作成することもできますが、デュアルリージョンとマルチリージョンのロケーションでトリガーはサポートされません。
イベントソースのロケーションによってトリガーのロケーションが決まります。通常、これは単一リージョンのロケーションです。たとえば、監査ログのトリガーを使用して、europe-west1
リージョンのバケットから Cloud Storage イベントをキャプチャするには、同じロケーションにトリガーを作成します。
gcloud eventarc triggers create trigger-auditlog \
--destination-run-service=hello \
--destination-run-region=us-central1 \
--location=europe-west1 \
--event-filters="type=google.cloud.audit.log.v1.written" \
--event-filters="serviceName=storage.googleapis.com" \
--event-filters="methodName=storage.objects.create" \
--service-account=$PROJECT_NUMBER-compute@developer.gserviceaccount.com
Cloud Audit Logs トリガーを使用している場合はバケットでフィルタリングされないため、europe-west1
リージョン内のすべてのバケットと一致します(バケットでフィルタリングするには、代わりに Cloud Storage トリガーを直接使用します)。
また、eu
などのデュアルリージョンまたはマルチリージョン バケットと一致するには、global
のロケーションを指定してトリガーを作成します。これにより、イベント フィルタが一致するすべてのリージョンのすべてのバケットと一致します。
gcloud eventarc triggers create trigger-storage \
--destination-run-service=hello \
--destination-run-region=us-central1 \
--location=global \
--event-filters="type=google.cloud.storage.object.v1.finalized" \
--event-filters="bucket=my-bucket-in-europe-west1-region" \
--service-account=$PROJECT_NUMBER-compute@developer.gserviceaccount.com
Cloud Storage
Cloud Storage トリガーは、オブジェクトの作成、削除、アーカイブ、メタデータ更新など、Cloud Storage バケット内のイベントに応答します。Cloud Storage トリガーは、シングルリージョン、デュアルリージョン、マルチリージョンのロケーションで使用できますが、グローバル Eventarc トリガーは作成できません。
Cloud Storage バケットのロケーションによって、Eventarc トリガーのロケーションが決まります。これらは必ず一致している必要があります。次の例では、トリガーのロケーションは Cloud Storage バケット(eu
マルチリージョン ロケーション)と一致します。
gcloud eventarc triggers create trigger-storage \
--destination-run-service=hello \
--destination-run-region=us-central1 \
--location=eu \
--event-filters="type=google.cloud.storage.object.v1.finalized" \
--event-filters="bucket=my-bucket-in-eu-multi-region" \
--service-account=$PROJECT_NUMBER-compute@developer.gserviceaccount.com
バケットとトリガーのリージョンが一致しない場合、次のようなエラーが表示されます。
ERROR: (gcloud.eventarc.triggers.create) INVALID_ARGUMENT: The request was
invalid: Bucket "my-bucket-in-eu-multi-region" location "eu" does not match
trigger location "europe-west1". Try again by creating the trigger in "eu".
Pub/Sub
Pub/Sub トリガーは、Pub/Sub トピックをイベント ターゲットに接続します。Pub/Sub トリガーは単一リージョンのロケーションでのみ使用できます。グローバル Eventarc トリガーを作成することはできません。
Pub/Sub トピックはグローバルであり、単一リージョンに関連付けられていませんが、Pub/Sub トリガーを作成するときに、--location
フラグを使用してリージョンを指定する必要があります。
gcloud eventarc triggers create trigger-pubsub \
--destination-run-service=hello \
--destination-run-region=us-central1 \
--location=us-central1 \
--event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
--transport-topic=projects/your-projectid/topics/your-topic
Eventarc は、Pub/Sub イベントが指定のロケーションでのみ保持されるようにジオフェンスを構成します。また、リージョンの Pub/Sub サービス エンドポイントを使用してトピックに公開することで、すべてのデータが単一リージョン内にとどまるようにすることもできます。
次のステップ
- Google Cloud プロジェクト間でイベントをルーティングする方法については、チュートリアルをご覧ください。