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.