Eventarc-Standorte

Jede Ereignisquelle, jedes Ereignisziel und jeder Eventarc-Trigger hat einen eigenen Standort. Manchmal müssen diese Speicherorte übereinstimmen. Zu unterschiedlichen Zeiten können sie unterschiedlich sein. Weitere Informationen finden Sie unter Eventarc-Standorte.

Quellort

Der Standort der Ereignisquelle bestimmt häufig den Triggerstandort. Im folgenden Beispiel muss sich der Cloud Storage-Bucket in der Region europe-west1 befinden, außerdem muss sich der Trigger in europe-west1 befinden.

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

Zielregion

Beim Bereitstellen des Ereignisziels (z. B. eines Cloud Run-Dienstes) wählen Sie eine unterstützte Region als Standort aus. Aus Latenz- und Datenlokalitätsgründen sollte dies in der Regel in derselben Region wie Ihre Ereignisquelle liegen. Dies ist jedoch nicht zwingend erforderlich. Im vorherigen Beispiel befindet sich die Ereignisquelle in europe-west1, während das Flag --destination-run-region angibt, dass sich das Ereignisziel in us-central1 befindet.

Triggerstandort

Darüber hinaus wirkt sich der Typ des erstellten Eventarc-Triggers auf den Speicherort des Triggers aus, der über das Flag --location angegeben wird:

Cloud-Audit-Logs

Mit Cloud-Audit-Log-Triggern können Sie jede Ereignisquelle, die Audit-Logs ausgibt, mit einem Ereignisziel verbinden. Cloud-Audit-Log-Trigger sind an Standorten mit einer einzigen Region verfügbar und Sie können auch einen globalen Eventarc-Trigger erstellen. Trigger werden jedoch nicht an Standorten mit zwei oder mehr Regionen unterstützt.

Der Speicherort der Ereignisquelle bestimmt den Triggerstandort. In der Regel ist dies ein Standort mit einer einzigen Region. Wenn Sie beispielsweise Cloud Storage-Ereignisse aus einem Bucket in der Region europe-west1 mit einem Audit-Log-Trigger erfassen möchten, erstellen Sie einen Trigger am selben Standort:

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

Da Sie keinen Bucket nach Filter filtern, wenn Sie einen Cloud-Audit-Log-Trigger verwenden, werden alle Buckets in der Region europe-west1 abgeglichen. Zum Filtern nach Bucket können Sie stattdessen einen direkten Cloud Storage-Trigger verwenden.

Für einen Bucket mit zwei Regionen oder einem multiregionalen Standort wie eu können Sie alternativ einen Trigger mit dem Standort global erstellen. Dieser stimmt mit allen Buckets in allen Regionen überein, mit denen der Ereignisfilter übereinstimmt:

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-Trigger reagieren auf Ereignisse in einem Cloud Storage-Bucket – Objekterstellung, Löschung, Archivierung und Metadatenaktualisierungen. Cloud Storage-Trigger sind an Standorten mit einer Region, mit zwei Regionen und mit mehreren Regionen verfügbar. Sie können keinen globalen Eventarc-Trigger erstellen.

Der Standort des Eventarc-Triggers legt den Speicherort des Cloud Storage-Buckets fest und muss übereinstimmen. Im folgenden Beispiel entspricht der Triggerspeicherort dem des Cloud Storage-Buckets (dem multiregionalen Standort 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

Wenn die Bucket- und Triggerregionen nicht übereinstimmen, wird ein Fehler wie der folgende angezeigt:

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

Ein Pub/Sub-Trigger verbindet ein Pub/Sub-Thema mit einem Ereignisziel. Pub/Sub-Trigger sind nur an Standorten mit einer Region verfügbar und Sie können keinen globalen Eventarc-Trigger erstellen.

Pub/Sub-Themen sind global und sind nicht an eine einzelne Region gebunden. Beim Erstellen eines Pub/Sub-Triggers müssen Sie jedoch mit dem Flag --location eine Region dafür angeben:

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 konfiguriert Geofencing, damit Pub/Sub-Ereignisse nur am angegebenen Standort verbleiben. Sie können auch regionale Pub/Sub-Dienstendpunkte verwenden, um in dem Thema zu veröffentlichen, sodass alle Daten in einer einzigen Region bleiben.

Nächste Schritte

  • Informationen zum Weiterleiten von Ereignissen in Google Cloud-Projekten finden Sie in der Anleitung.