Entender os locais do Eventarc

Cada origem, destino e gatilho do Eventarc tem um local próprio. Às vezes, esses locais precisam ser correspondentes. Em outros momentos, eles podem ser diferentes. Para mais informações, consulte Locais do Eventarc.

Local de origem

O local da origem do evento costuma definir o local do acionador. No exemplo a seguir, como o bucket do Cloud Storage está na região europe-west1, o gatilho também precisa estar localizado em 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

Local de destino

Ao implantar o destino do evento (por exemplo, um serviço do Cloud Run), você escolhe uma região compatível como o local. Normalmente, por motivos de latência e localidade dos dados, você quer que eles estejam na mesma região que a fonte de eventos. No entanto, isso não é um requisito e, no exemplo anterior, a origem do evento está em europe-west1, enquanto a sinalização --destination-run-region indica que o destino do evento está em us-central1.

Local do gatilho

Além disso, o tipo de gatilho do Eventarc que você cria afeta o local do gatilho especificado pela sinalização --location:

Registros de auditoria do Cloud

Usando os gatilhos de registros de auditoria do Cloud, é possível conectar qualquer fonte que emita registros de auditoria a um destino de evento. Os gatilhos de registros de auditoria do Cloud estão disponíveis em locais de região única e é possível criar um gatilho global do Eventarc. No entanto, os gatilhos não são suportados em locais birregionais e multirregionais.

O local da origem do evento determina o local do gatilho. Normalmente, é um local de região única. Por exemplo, para capturar eventos do Cloud Storage de um bucket na região europe-west1 com um gatilho de registros de auditoria, crie um gatilho no mesmo local:

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 não há filtragem por bucket ao usar um gatilho de Registros de auditoria do Cloud, isso corresponderá a todos os buckets na região europe-west1. Para filtrar por bucket, use um gatilho direto do Cloud Storage.

Ou, para fazer a correspondência com um bucket birregional ou multirregional, como eu, crie um gatilho com um local global, e isso corresponderá a todos os buckets em todas as regiões em que os filtros de evento correspondem:

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

Os gatilhos do Cloud Storage respondem a eventos dentro de um bucket do Cloud Storage: criação de objetos, exclusão, arquivamento e atualizações de metadados. Os gatilhos do Cloud Storage estão disponíveis em locais de região única, birregionais e multirregionais. Não é possível criar um gatilho global do Eventarc.

O local do bucket do Cloud Storage determina o local do gatilho do Eventarc e eles precisam corresponder. No exemplo a seguir, o local do gatilho corresponde ao do bucket do Cloud Storage (o local 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

Se as regiões do bucket e do gatilho não forem correspondentes, você verá um erro semelhante a este:

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

Um gatilho do Pub/Sub conecta um tópico do Pub/Sub a um destino de evento. Os gatilhos do Pub/Sub estão disponíveis apenas em locais de uma única região e não é possível criar um gatilho global do Eventarc.

Embora os tópicos do Pub/Sub sejam globais e não estejam vinculados a uma única região, ao criar um gatilho do Pub/Sub, é preciso especificar uma região para ele usando a sinalização --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

O Eventarc configura a fronteira geográfica virtual para que os eventos do Pub/Sub sejam mantidos apenas no local especificado. Também é possível usar endpoints de serviço do Pub/Sub regionais para publicar no tópico para que todos os dados permaneçam em uma única região.

A seguir

  • Para saber como encaminhar eventos entre projetos do Google Cloud, consulte o tutorial.