Compreenda as localizações do Eventarc

Cada origem de eventos, destino de eventos e acionador do Eventarc tem a sua própria localização. Por vezes, estas localizações têm de corresponder. Noutras ocasiões, podem ser diferentes. Para mais informações, consulte o artigo Localizações do Eventarc.

Localização da origem

A localização da origem do evento determina frequentemente a localização do acionador. No exemplo seguinte, uma vez que o contentor do Cloud Storage está na região europe-west1, o acionador também tem de 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

Localização de segmentação

Quando implementa o destino de eventos (por exemplo, um serviço do Cloud Run), escolhe uma região suportada como respetiva localização. Normalmente, por motivos de latência e localidade dos dados, recomendamos que esta esteja na mesma região que a origem de eventos. No entanto, não é um requisito e, no exemplo anterior, a origem do evento está em europe-west1, enquanto a flag --destination-run-region indica que o destino do evento está em us-central1.

Localização do acionador

Além disso, o tipo de acionador do Eventarc que criar afeta a localização do acionador, que é especificada através da flag --location:

Cloud Audit Logs

Com os acionadores dos registos de auditoria do Google Cloud, pode associar qualquer origem de eventos que emita registos de auditoria a um destino de eventos. Os acionadores dos registos de auditoria do Cloud estão disponíveis em localizações de região única, e também pode criar um acionador do Eventarc global. No entanto, os acionadores não são suportados em localizações de duas regiões e multirregionais.

A localização da origem do evento determina a localização do acionador. Normalmente, trata-se de uma localização de região única. Por exemplo, para capturar eventos do Cloud Storage de um contentor na região europe-west1 com um acionador de registos de auditoria, crie um acionador na mesma localização:

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 existe filtragem por contentor quando usa um acionador dos registos de auditoria da nuvem, este vai corresponder a todos os contentores na região europe-west1. (Para filtrar por contentor, pode usar um acionador do Cloud Storage direto.)

Em alternativa, para fazer corresponder um contentor de região dupla ou multirregião, como eu, pode criar um acionador com uma localização global. Este vai corresponder a todos os contentores em todas as regiões para as quais os filtros de eventos 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 acionadores do Cloud Storage respondem a eventos num contentor do Cloud Storage: criação, eliminação, arquivo e atualizações de metadados de objetos. Os acionadores do Cloud Storage estão disponíveis em localizações de região única, duas regiões e várias regiões. Não pode criar um acionador do Eventarc global.

A localização do contentor do Cloud Storage determina a localização do acionador do Eventarc e tem de corresponder. No exemplo seguinte, a localização do acionador corresponde à do contentor do Cloud Storage (a localização eu multirregional):

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 contentor e do acionador não corresponderem, é apresentado um erro semelhante ao seguinte:

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 acionador do Pub/Sub associa um tópico do Pub/Sub a um destino de evento. Os acionadores do Pub/Sub só estão disponíveis em localizações de região única e não pode criar um acionador do Eventarc global.

Embora os tópicos do Pub/Sub sejam globais e não estejam associados a uma única região, quando cria um acionador do Pub/Sub, tem de especificar uma região para o mesmo através da flag --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 o geofencing para que os eventos do Pub/Sub persistam apenas na localização especificada. Também pode usar endpoints de serviço do Pub/Sub regionais para publicar no tópico, de modo que todos os dados permaneçam numa única região.

O que se segue?

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