Comprendre les emplacements Eventarc

Chaque source d'événement, cible d'événement et déclencheur Eventarc possède son propre emplacement. Parfois, ces emplacements doivent correspondre. Dans d'autres cas, ils peuvent être différents. Pour en savoir plus, consultez la page Emplacements Eventarc.

Emplacement de la source

L'emplacement de la source d'événement détermine souvent l'emplacement du déclencheur. Dans l'exemple suivant, étant donné que le bucket Cloud Storage se trouve dans la région europe-west1, le déclencheur doit également être situé dans la région 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

Emplacement de la cible

Lorsque vous déployez votre cible d'événement (par exemple, un service Cloud Run), vous choisissez une région compatible comme emplacement. Pour des raisons de latence et de localité des données, il est généralement préférable de se trouver dans la même région que votre source d'événement. Cela n'est toutefois pas obligatoire et, dans l'exemple précédent, la source d'événement se trouve dans europe-west1, tandis que l'option --destination-run-region indique que la cible d'événement se trouve dans us-central1.

Emplacement du déclencheur

De plus, le type de déclencheur Eventarc que vous créez a une incidence sur l'emplacement du déclencheur, spécifié via l'option --location :

Cloud Audit Logs

À l'aide des déclencheurs Cloud Audit Logs, vous pouvez connecter n'importe quelle source d'événement qui émet des journaux d'audit à une cible d'événement. Les déclencheurs Cloud Audit Logs sont disponibles dans les emplacements comprenant une seule région, et vous pouvez également créer un déclencheur Eventarc global. Toutefois, les déclencheurs ne sont pas disponibles dans les emplacements birégionaux et multirégionaux.

L'emplacement de la source d'événement détermine l'emplacement du déclencheur. En règle générale, il s'agit d'un emplacement comprenant une seule région. Par exemple, pour capturer les événements Cloud Storage d'un bucket de la région europe-west1 avec un déclencheur de journaux d'audit, créez un déclencheur au même emplacement :

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

Comme il n'y a pas de filtrage par bucket lorsque vous utilisez un déclencheur Cloud Audit Logs, tous les buckets de la région europe-west1 seront ciblés. (Pour filtrer par bucket, vous pouvez utiliser un déclencheur Cloud Storage direct.)

Ou, pour cibler un bucket birégional ou multirégional tel que eu, vous pouvez créer un déclencheur avec un emplacement global, ce qui va cibler tous les buckets de toutes les régions pour lesquelles les filtres d'événements correspondent :

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

Les déclencheurs Cloud Storage répondent aux événements ayant lieu au sein d'un bucket Cloud Storage : création, suppression et archivage, ainsi que mises à jour de métadonnées. Les déclencheurs Cloud Storage sont disponibles dans des emplacements régionaux, birégionaux et multirégionaux. Vous ne pouvez pas créer un déclencheur Eventarc global.

L'emplacement du bucket Cloud Storage détermine l'emplacement du déclencheur Eventarc, et ils doivent correspondre. Dans l'exemple suivant, l'emplacement du déclencheur correspond à celui du bucket Cloud Storage (l'emplacement multirégional 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

Si les régions du bucket et du déclencheur ne correspondent pas, une erreur semblable à celle-ci s'affiche :

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

Un déclencheur Pub/Sub connecte un sujet Pub/Sub à une cible d'événement. Les déclencheurs Pub/Sub ne sont disponibles que dans les emplacements comprenant une seule région. Vous ne pouvez pas créer un déclencheur Eventarc global.

Bien que les sujets Pub/Sub soient globaux et non liés à une seule région, lorsque vous créez un déclencheur Pub/Sub, vous devez spécifier une région à l'aide de l'option --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 configure le géorepérage pour que les événements Pub/Sub ne persistent que dans l'emplacement spécifié. Vous pouvez également utiliser des points de terminaison de service Pub/Sub régionaux pour publier dans le sujet de manière à ce que toutes les données restent dans une seule région.

Étapes suivantes

  • Pour savoir comment router des événements entre des projets Google Cloud, consultez le tutoriel.