Memahami lokasi Eventarc

Setiap sumber peristiwa, target peristiwa, dan pemicu Eventarc memiliki lokasinya sendiri. Terkadang, lokasi ini harus cocok; di lain waktu, lokasi tersebut dapat berbeda. Untuk informasi selengkapnya, lihat Lokasi Eventarc.

Lokasi sumber

Lokasi sumber peristiwa sering kali menentukan lokasi pemicu. Dalam contoh berikut, karena bucket Cloud Storage berada di region europe-west1, pemicu juga harus berada di 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

Lokasi target

Saat men-deploy target peristiwa (misalnya, layanan Cloud Run), Anda memilih region yang didukung sebagai lokasinya. Biasanya, untuk alasan latensi dan lokalitas data, Anda ingin bucket ini berada di region yang sama dengan sumber peristiwa. Namun, hal ini bukan merupakan persyaratan dan dalam contoh sebelumnya, sumber peristiwa berada di europe-west1, sedangkan tanda --destination-run-region menunjukkan bahwa target peristiwa berada di us-central1.

Lokasi pemicu

Selain itu, jenis pemicu Eventarc yang Anda buat memengaruhi lokasi pemicu yang ditentukan melalui flag --location:

Cloud Audit Logs

Dengan pemicu Cloud Audit Logs, Anda dapat menghubungkan sumber peristiwa apa pun yang menghasilkan log audit ke target peristiwa. Pemicu Log Audit Cloud tersedia di lokasi satu region dan Anda juga dapat membuat pemicu Eventarc global; namun, pemicu tidak didukung di lokasi dual-region dan multi-region.

Lokasi sumber peristiwa menentukan lokasi pemicu. Biasanya, ini adalah lokasi satu region. Misalnya, untuk merekam peristiwa Cloud Storage dari bucket di region europe-west1 dengan pemicu log audit, buat pemicu di lokasi yang sama:

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

Karena tidak ada pemfilteran menurut bucket saat Anda menggunakan pemicu Log Audit Cloud, hal ini akan cocok dengan semua bucket di region europe-west1. (Untuk memfilter berdasarkan bucket, Anda dapat menggunakan pemicu Cloud Storage langsung.)

Atau, untuk mencocokkan bucket region ganda atau multi-region seperti eu, Anda dapat membuat pemicu dengan lokasi global dan ini akan cocok dengan semua bucket di semua region yang filter peristiwanya cocok:

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

Pemicu Cloud Storage merespons peristiwa di dalam bucket Cloud Storage, yaitu pembuatan, penghapusan, pengarsipan, dan pembaruan metadata objek. Pemicu Cloud Storage tersedia di lokasi satu region, dual-region, dan multi-region; Anda tidak dapat membuat pemicu Eventarc global.

Lokasi bucket Cloud Storage menentukan lokasi pemicu Eventarc, dan keduanya harus cocok. Dalam contoh berikut, lokasi pemicu cocok dengan bucket Cloud Storage (lokasi multi-region 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

Jika bucket dan wilayah pemicu tidak cocok, Anda akan melihat error yang mirip dengan berikut ini:

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

Pemicu Pub/Sub menghubungkan topik Pub/Sub ke target peristiwa. Pemicu Pub/Sub hanya tersedia di lokasi satu region dan Anda tidak dapat membuat pemicu Eventarc global.

Meskipun topik Pub/Sub bersifat global dan tidak terikat dengan satu region, saat membuat pemicu Pub/Sub, Anda harus menentukan region untuk pemicu tersebut menggunakan tanda --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 mengonfigurasi pembatasan wilayah sehingga peristiwa Pub/Sub hanya ada di lokasi yang ditentukan. Anda juga dapat menggunakan endpoint layanan Pub/Sub regional untuk memublikasikan ke topik sehingga semua data tetap berada di satu region.

Langkah berikutnya

  • Untuk mempelajari cara merutekan peristiwa di seluruh Google Cloud project, lihat tutorial.