Pemicu Eventarc menyatakan minat Anda pada peristiwa atau rangkaian peristiwa tertentu. Anda dapat mengonfigurasi perutean peristiwa dengan menentukan filter untuk pemicu, termasuk sumber peristiwa, dan layanan Cloud Run target.
Eventarc mengirimkan peristiwa ke penerima peristiwa dalam format CloudEvents melalui permintaan HTTP.
Cloud Firestore mendukung Konteks Auth sebagai atribut ekstensi untuk format CloudEvents. Saat membuat pemicu, Anda dapat menerapkan atribut jenis peristiwa ini untuk memfilter peristiwa dengan informasi autentikasi.
Petunjuk ini menunjukkan cara mengonfigurasi perutean peristiwa ke layanan Cloud Run yang dipicu oleh peristiwaCloud Firestore langsung. Untuk mengetahui detail selengkapnya, lihat daftar peristiwa langsung yang didukung.
Bersiap untuk membuat pemicu
Sebelum Anda membuat pemicu, selesaikan prasyarat ini:
Konsol
Di Google Cloud konsol, pada halaman pemilih project, pilih atau buat Google Cloud project.
Aktifkan Cloud Logging, Eventarc, dan Eventarc Publishing API.
Jika berlaku, aktifkan API yang terkait dengan peristiwa langsung. Misalnya, untuk peristiwa Cloud Firestore , aktifkan APICloud Firestore .
Jika Anda belum memilikinya, buat akun layanan yang dikelola pengguna, lalu berikan peran dan izin yang diperlukan agar Eventarc dapat mengelola peristiwa untuk layanan target Anda.
Di konsol Google Cloud , buka halaman Create service account.
Pilih project Anda.
Di kolom Nama akun layanan, masukkan nama. Konsol Google Cloud akan mengisi kolom Service account ID berdasarkan nama ini.
Di kolom Deskripsi akun layanan, masukkan sebuah deskripsi. Contoh,
Service account for event trigger
.Klik Buat dan lanjutkan.
Untuk memberikan akses yang sesuai, di daftar Pilih peran, pilih peran Identity and Access Management (IAM) yang diperlukan untuk diberikan ke akun layanan Anda untuk pemanggilan yang diautentikasi atau tidak diautentikasi. Untuk mengetahui informasi selengkapnya, lihat Peran dan izin untuk target Cloud Run.
Untuk peran tambahan, klik
Tambahkan peran lain, lalu tambahkan setiap peran tambahan.Klik Lanjutkan.
Untuk menyelesaikan pembuatan akun, klik Selesai.
gcloud
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Aktifkan Cloud Logging, Eventarc, dan Eventarc Publishing API.
gcloud services enable logging.googleapis.com \ eventarc.googleapis.com \ eventarcpublishing.googleapis.com
Jika berlaku, aktifkan API yang terkait dengan peristiwa langsung. Misalnya, untuk Cloud Firestore acara, aktifkan
firestore.googleapis.com
.Jika Anda belum memilikinya, buat akun layanan yang dikelola pengguna, lalu berikan peran dan izin yang diperlukan agar Eventarc dapat mengelola peristiwa untuk layanan target Anda.
Buat akun layanan:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
Ganti
SERVICE_ACCOUNT_NAME
dengan nama akun layanan. Panjangnya harus antara 6 hingga 30 karakter, dan dapat berisi karakter alfanumerik huruf kecil dan tanda pisah. Setelah membuat akun layanan, Anda tidak dapat mengubah namanya.Berikan peran atau izin Identity and Access Management (IAM) yang diperlukan untuk pemanggilan yang diautentikasi atau tidak diautentikasi. Untuk mengetahui informasi selengkapnya, lihat Peran dan izin untuk target Cloud Run.
Buat pemicu
Anda dapat membuat pemicu Eventarc menggunakan Google Cloud CLI atau melalui konsol Google Cloud .
Konsol
- Di konsol Google Cloud , buka halaman Pemicu Eventarc.
- Klik Create trigger.
- Ketik Trigger name.
Ini adalah ID pemicu dan harus dimulai dengan huruf. Nama ini dapat berisi hingga 63 huruf kecil, angka, atau tanda hubung.
- Untuk Jenis pemicu, pilih Sumber Google.
- Dalam daftar Penyedia peristiwa, pilih
Cloud Firestore.
Perhatikan bahwa nama penyedia peristiwa yang digunakan dalam Google Cloud dokumentasi terkait mungkin tidak memiliki awalan Cloud atau Google Cloud. Misalnya, di konsol, Memorystore for Redis disebut sebagai Google Cloud Memorystore for Redis.
- Di daftar Jenis peristiwa, dari peristiwa Langsung, pilih jenis peristiwa.
- Di daftar Jenis konten data peristiwa, pilih encoding
payload peristiwa.
Untuk peristiwa langsung dari Cloud Firestore, nilai ini harus berupa application/protobuf dan data peristiwa adalah array byte. Untuk mengetahui informasi selengkapnya tentang pesan protobuf untuk peristiwa Cloud Firestore, lihat Peristiwa umum.
- Dalam daftar Region, pilih region yang sama dengan
layananGoogle Cloud yang menghasilkan peristiwa.
Untuk mengetahui informasi selengkapnya, lihat Lokasi Eventarc.
- Jika berlaku untuk penyedia acara, klik Tambahkan filter
dan tentukan hal berikut:
- Di kolom Atribut 1, bergantung pada peristiwa langsung yang Anda pilih, pilih ID resource yang dapat berfungsi sebagai filter peristiwa.
- Pilih operator:
- Sama dengan
- Pola jalur: berlaku untuk resource
document
(mode Native) danentity
(mode Datastore). Gunakan karakter pengganti untuk merespons perubahan yang cocok dengan pola. Karakter pengganti*
cocok dengan satu segmen dan karakter pengganti multi-segmen**
cocok dengan nol atau beberapa segmen dalam pola. Jangan tentukan garis miring di awal—misalnya:users/*
atauusers/{userId}
Mencocokkan semua dokumen dalam koleksi /users
. Tidak cocok dengan dokumen dalam subkoleksi seperti/users/marie/messages/33e2IxYBD9enzS50SJ68
users/**
Mencocokkan semua dokumen dalam koleksi /users
dan dokumen dalam subkoleksi seperti/users/marie/messages/33e2IxYBD9enzS50SJ68
Untuk mengetahui informasi selengkapnya, lihat Memahami pola jalur.
- Di kolom Nilai atribut 1, bergantung pada operator yang Anda pilih, ketik nilai persisnya atau terapkan pola jalur.
- Jika ada filter atribut lainnya yang berlaku, klik Tambahkan filter, lalu tentukan nilai yang sesuai.
- Pilih Service account yang akan memanggil layanan
atau alur kerja Anda.
Atau, Anda dapat membuat akun layanan baru.
Ini menentukan email akun layanan Identity and Access Management (IAM) yang terkait dengan pemicu dan yang sebelumnya Anda beri peran tertentu yang diperlukan oleh Eventarc.
- Dalam daftar Tujuan peristiwa, pilih Cloud Run.
- Pilih layanan.
Ini adalah nama layanan yang menerima peristiwa untuk pemicu. Layanan harus berada dalam project yang sama dengan pemicu dan akan menerima peristiwa sebagai permintaan POST HTTP yang dikirim ke jalur URL root-nya (
/
), setiap kali peristiwa dihasilkan. - Secara opsional, Anda dapat menentukan jalur URL Layanan untuk mengirim
permintaan masuk.
Ini adalah jalur relatif pada layanan tujuan tempat peristiwa untuk pemicu harus dikirim. Misalnya:
/
,/route
,route
,route/subroute
. - Secara opsional, untuk menambahkan label, Anda dapat mengklik Apa yang dimaksud dengan label? Tambahkan label. Label adalah pasangan nilai kunci yang membantu Anda mengaturGoogle Cloud resource. Untuk mengetahui informasi selengkapnya, lihat
- Klik Buat.
Setelah pemicu dibuat, filter sumber peristiwa tidak dapat diubah. Sebagai gantinya, buat pemicu baru dan hapus pemicu lama. Untuk mengetahui informasi selengkapnya, lihat Mengelola pemicu.
gcloud
Anda dapat membuat pemicu dengan menjalankan perintah gcloud eventarc triggers create
bersama dengan flag wajib dan opsional.
Flag berbeda-beda, bergantung pada apakah Anda menjalankan Firestore dalam mode Native atau dalam mode Datastore. Untuk mengetahui informasi selengkapnya, lihat Memilih antara mode Native dan mode Datastore.
Mode native
gcloud eventarc triggers create TRIGGER \ --location=LOCATION \ --destination-run-service=DESTINATION_RUN_SERVICE \ --destination-run-region=DESTINATION_RUN_REGION \ --event-filters="type=EVENT_FILTER_TYPE" \ --event-filters="database=DATABASE" \ --event-filters="namespace=NAMESPACE" \ --event-filters-path-pattern="document=DOCUMENT" \ --event-data-content-type="EVENT_DATA_CONTENT_TYPE" \ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com"
Mode Datastore
gcloud eventarc triggers create TRIGGER \ --location=LOCATION \ --destination-run-service=DESTINATION_RUN_SERVICE \ --destination-run-region=DESTINATION_RUN_REGION \ --event-filters="type=EVENT_FILTER_TYPE" \ --event-filters="database=DATABASE" \ --event-filters="namespace=NAMESPACE" \ --event-filters-path-pattern="entity=ENTITY" \ --event-data-content-type="EVENT_DATA_CONTENT_TYPE" \ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com"
Ganti kode berikut:
TRIGGER
: ID pemicu atau ID yang memenuhi syarat sepenuhnya.
LOCATION
: lokasi pemicu Eventarc. Atau, Anda dapat menetapkan propertieventarc/location
; misalnyagcloud config set eventarc/location us-central1
.Pemicu Cloud Firestore untuk Eventarc hanya tersedia di lokasi tertentu dan pemicu harus berada di lokasi yang sama dengan database Cloud Firestore. Untuk mengetahui informasi selengkapnya, lihat Lokasi Eventarc dan Lokasi Cloud Firestore.
-
DESTINATION_RUN_SERVICE
: nama layanan Cloud Run yang menerima peristiwa untuk pemicu. Layanan dapat berada di salah satu lokasi yang didukung Cloud Run dan tidak harus berada di lokasi yang sama dengan pemicu. Namun, layanan harus berada dalam project yang sama dengan pemicu dan akan menerima peristiwa sebagai permintaan POST HTTP yang dikirim ke jalur URL root-nya (/
), setiap kali peristiwa dibuat. -
DESTINATION_RUN_REGION
: (opsional) region tempat layanan Cloud Run tujuan dapat ditemukan. Jika tidak ditentukan, diasumsikan bahwa layanan berada di region yang sama dengan pemicu. EVENT_FILTER_TYPE
: ID peristiwa. Peristiwa dibuat saat panggilan API untuk metode berhasil. Untuk operasi yang berjalan lama, peristiwa hanya dibuat di akhir operasi, dan hanya jika tindakan berhasil dilakukan. Untuk mengetahui daftar jenis peristiwa yang didukung, lihat Jenis peristiwa Google yang didukung oleh Eventarc.
Cloud Firestore mendukung jenis peristiwa berikut hanya dalam mode Native.
google.cloud.firestore.document.v1.created
: peristiwa dikirim saat dokumen ditulisi untuk pertama kalinyagoogle.cloud.firestore.document.v1.created.withAuthContext
: peristiwa dengan atribut informasi autentikasi dikirim saat dokumen ditulis untuk pertama kalinyagoogle.cloud.firestore.document.v1.updated
: peristiwa dikirim saat dokumen sudah ada dan nilainya berubahgoogle.cloud.firestore.document.v1.updated.withAuthContext
: peristiwa dengan atribut informasi autentikasi dikirim saat dokumen sudah ada dan nilainya berubahgoogle.cloud.firestore.document.v1.deleted
: peristiwa dikirim saat dokumen dihapusgoogle.cloud.firestore.document.v1.deleted.withAuthContext
: event dengan atribut informasi autentikasi dikirim saat dokumen dihapusgoogle.cloud.firestore.document.v1.written
: peristiwa dikirim saat dokumen dibuat, diperbarui, atau dihapusgoogle.cloud.firestore.document.v1.written.withAuthContext
: peristiwa dengan atribut informasi autentikasi dikirim saat dokumen dibuat, diupdate, atau dihapus.google.cloud.datastore.entity.v1.created
: peristiwa dikirim saat entitas ditulis untuk pertama kalinyagoogle.cloud.datastore.entity.v1.created.withAuthContext
: peristiwa dengan atribut informasi autentikasi dikirim saat entity ditulis untuk pertama kalinyagoogle.cloud.datastore.entity.v1.updated
: peristiwa dikirim saat entitas sudah ada dan nilainya berubahgoogle.cloud.datastore.entity.v1.updated.withAuthContext
: peristiwa dengan atribut informasi autentikasi dikirim saat entity sudah ada dan nilainya berubahgoogle.cloud.datastore.entity.v1.deleted
: peristiwa dikirim saat entitas dihapusgoogle.cloud.datastore.entity.v1.deleted.withAuthContext
: peristiwa dengan atribut informasi autentikasi dikirim saat entity dihapusgoogle.cloud.datastore.entity.v1.written
: peristiwa dikirim saat entitas dibuat, diperbarui, atau dihapusgoogle.cloud.datastore.entity.v1.written.withAuthContext
: peristiwa dengan atribut informasi autentikasi dikirim saat entity dibuat, diperbarui, atau dihapus
Cloud Firestore mendukung jenis peristiwa berikut hanya dalam mode Datastore. Objek data di Firestore dalam mode Datastore disebut sebagai entity.
DATABASE
: database Firestore. Untuk nama database default, gunakan(default)
.NAMESPACE
(opsional): namespace database Firestore. Untuk namespace default dalam mode Datastore, gunakan(default)
. Jika tidak ditentukan, kecocokan karakter pengganti (*
) dengan kemunculan apa pun akan dilakukan.DOCUMENT
(opsional): berlaku untuk instance database yang berjalan dalam mode Native saja. Jalur database tempat Anda ingin menerima peristiwa saat data dibuat, diperbarui, atau dihapus di jalur tersebut. Jangan tentukan garis miring di awal. Operator dapat berupa salah satu dari berikut:- Sama; misalnya,
--event-filters="document=DOCUMENT"
- Pola jalur; misalnya,
--event-filters-path-pattern="document=DOCUMENT"
.Gunakan karakter pengganti untuk merespons perubahan pada dokumen yang cocok dengan pola. Karakter pengganti
*
cocok dengan satu segmen dan karakter pengganti multi-segmen**
cocok dengan nol atau beberapa segmen dalam pola—misalnya:users/*
atauusers/{userId}
Mencocokkan semua dokumen dalam koleksi /users
. Tidak cocok dengan dokumen di subkoleksi seperti/users/marie/messages/33e2IxYBD9enzS50SJ68
users/**
Mencocokkan semua dokumen dalam koleksi /users
dan dokumen dalam subkoleksi seperti/users/marie/messages/33e2IxYBD9enzS50SJ68
- Sama; misalnya,
ENTITY
(opsional): berlaku untuk instance database yang berjalan dalam mode Datastore saja. Jalur database tempat Anda ingin menerima peristiwa saat data dibuat, diperbarui, atau dihapus di jalur tersebut. Jangan tentukan garis miring di awal. Operator dapat berupa salah satu dari berikut:- Sama; misalnya,
--event-filters="document=ENTITY"
- Pola jalur; misalnya,
--event-filters-path-pattern="ENTITY=ENTITY"
Untuk mengetahui informasi selengkapnya, lihat Memahami pola jalur.
Perhatikan bahwa Anda mungkin perlu meng-escape karakter dalam ID jenis dan ID entitas. Mengganti karakter memungkinkan filter peristiwa menafsirkan ID dengan benar. Untuk mengetahui informasi selengkapnya, lihat Pelepasan karakter.
- Sama; misalnya,
EVENT_DATA_CONTENT_TYPE
: the encoding of the event payload. Untuk peristiwa langsung dari Firestore, ini harus berupaapplication/protobuf
dan data peristiwa adalah array byte. Untuk mengetahui informasi selengkapnya tentang pesan protobuf untuk peristiwa Cloud Firestore, lihat Peristiwa umum.SERVICE_ACCOUNT_NAME
: nama akun layanan yang dikelola pengguna Anda.PROJECT_ID
: ID project Google Cloud Anda.
Catatan:
- Untuk peristiwa langsung dari Cloud Firestore, encoding
payload peristiwa adalah
application/protobuf
. - Flag
--event-filters="type=EVENT_FILTER_TYPE"
wajib diisi. Jika tidak ada filter peristiwa lain yang ditetapkan, peristiwa untuk semua resource akan dicocokkan. EVENT_FILTER_TYPE
tidak dapat diubah setelah dibuat. Untuk mengubahEVENT_FILTER_TYPE
, buat pemicu baru dan hapus pemicu lama.- Setiap pemicu dapat memiliki beberapa filter peristiwa, yang dipisahkan dengan koma dalam satu
--event-filters
=[ATTRIBUTE
=VALUE
,...] flag, atau Anda dapat mengulangi flag untuk menambahkan lebih banyak filter. Hanya peristiwa yang cocok dengan semua filter yang dikirim ke tujuan. Karakter pengganti dan ekspresi reguler tidak didukung. Namun, saat menggunakan flag--event-filters-path-pattern
, Anda dapat menentukan pola jalur resource. - Flag
--service-account
digunakan untuk menentukan email akun layanan Identity and Access Management (IAM) yang terkait dengan pemicu. - Secara opsional, tentukan jalur relatif pada layanan Cloud Run tujuan yang akan menerima peristiwa untuk pemicu dengan menggunakan flag
--destination-run-path
.
Contoh:
gcloud eventarc triggers create helloworld-trigger \ --location=us-east1 \ --destination-run-service=helloworld-events \ --destination-run-region=us-east1 \ --event-filters="type=google.cloud.firestore.document.v1.updated" \ --event-filters="database=my-database" \ --event-filters-path-pattern="document=users/my-document-*" \ --event-data-content-type="application/protobuf" \ --service-account=${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com
Perintah ini membuat pemicu bernama helloworld-trigger
untuk
peristiwa yang diidentifikasi sebagai google.cloud.firestore.document.v1.updated
di
instance database my-database
yang berjalan dalam mode Native, dan
memfilter peristiwa untuk jalur document
yang cocok dengan users/my-document-
.
Mencantumkan pemicu
Anda dapat mengonfirmasi pembuatan pemicu dengan mencantumkan pemicu Eventarc menggunakan Google Cloud CLI atau melalui konsol Google Cloud .
Konsol
Di konsol Google Cloud , buka halaman Pemicu Eventarc.
Halaman ini mencantumkan pemicu Anda di semua lokasi, dan menyertakan detail seperti nama, wilayah, penyedia peristiwa, tujuan, dan lainnya.
Untuk memfilter pemicu stres Anda:
- Klik Filter atau kolom Pemicu filter.
- Di daftar Properti, pilih opsi untuk memfilter pemicu.
Anda dapat memilih satu properti atau menggunakan operator logika
OR
untuk menambahkan lebih banyak properti.Untuk mengurutkan pemicu, di samping judul kolom yang didukung, klik
Urutkan.
gcloud
Jalankan perintah berikut untuk mencantumkan pemicu Anda:
gcloud eventarc triggers list --location=-
Perintah ini mencantumkan pemicu Anda di semua lokasi, dan menyertakan detail seperti nama, jenis, tujuan, dan status.
Langkah berikutnya
- Pelajari lebih lanjut penggunaan Eventarc dan Cloud Firestore.
- Pelajari Eventarc lebih lanjut.
- Pelajari cara mengelola pemicu.