Cada fuente de evento, destino de evento y activador de Eventarc tiene su propia ubicación. A veces, estas ubicaciones deben coincidir; en otros casos, pueden ser diferentes. Para obtener más información, consulta Ubicaciones de Eventarc.
Ubicación de la fuente
La ubicación de la fuente del evento suele dictar la ubicación del activador. En el siguiente ejemplo, dado que el bucket de Cloud Storage se encuentra en la región europe-west1
, el activador también debe estar ubicado en 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
Ubicación de destino
Cuando implementas el destino del evento (por ejemplo, un servicio de Cloud Run), debes elegir una región compatible como su ubicación. Por lo general, por motivos de latencia y localidad de los datos, se prefiere que esté en la misma región que la fuente del evento.
Sin embargo, no es un requisito, y, en el ejemplo anterior, la fuente del evento está en europe-west1
, mientras que la marca --destination-run-region
indica que el destino del evento está en us-central1
.
Ubicación del activador
Además, el tipo de activador de Eventarc que creas afecta la ubicación del activador, que se especifica a través de la marca --location
:
Registros de auditoría de Cloud
Con los activadores de los Registros de auditoría de Cloud, puedes conectar cualquier fuente de evento que emita registros de auditoría a un destino de evento. Los activadores de los Registros de auditoría de Cloud están disponibles en ubicaciones de una sola región, y también puedes crear un activador de Eventarc global. Sin embargo, los activadores no son compatibles con ubicaciones de región doble o multirregionales.
La ubicación de la fuente del evento determina la ubicación del activador. Por lo general, esta es una ubicación de una sola región. Por ejemplo, para capturar eventos de Cloud Storage desde un bucket en la región europe-west1
con un activador de registros de auditoría, crea un activador en la misma ubicación:
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
Como no hay filtros por bucket cuando uses un activador de los Registros de auditoría de Cloud, este coincidirá con todos los buckets en la región europe-west1
. (Para filtrar por bucket, puedes usar un activador directo de Cloud Storage).
O bien, para hacer coincidir un bucket de doble región o multirregional como eu
, puedes crear un activador con una ubicación global
y este coincidirá con todos los buckets en todas las regiones que coincidan con los filtros de eventos:
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
Los activadores de Cloud Storage responden a los eventos dentro de un bucket de Cloud Storage, como la creación, la eliminación, el archivado y las actualizaciones de metadatos de objetos. Los activadores de Cloud Storage están disponibles en ubicaciones de una sola región, birregionales y multirregionales. No puedes crear un activador de Eventarc global.
La ubicación del bucket de Cloud Storage determina la ubicación del activador de Eventarc, por lo que ambas deben coincidir. En el siguiente ejemplo, la ubicación del activador coincide con la del bucket de Cloud Storage (la ubicación multirregional 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 las regiones del bucket y del activador no coinciden, verás un error similar al siguiente:
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 activador de Pub/Sub conecta un tema de Pub/Sub a un destino de evento. Los activadores de Pub/Sub solo están disponibles en ubicaciones de una sola región y no puedes crear un activador de Eventarc global.
Aunque los temas de Pub/Sub son globales y no están vinculados a una sola región, cuando creas un activador de Pub/Sub, debes especificar una región con la marca --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 configura el geovallado para que los eventos de Pub/Sub se conserven solo en la ubicación especificada. También puedes usar extremos de servicio de Pub/Sub regionales para publicar en el tema, de modo que todos los datos permanezcan en una sola región.
¿Qué sigue?
- Para obtener información sobre cómo enrutar eventos en los proyectos de Google Cloud, consulta el instructivo.