Panduan ini membahas petunjuk untuk membuat pemicu bagi layanan dan fungsi Cloud Run dari peristiwa Firestore.
Anda dapat mengonfigurasi layanan Cloud Run agar dipicu oleh peristiwa di database Firestore. Saat dipicu, layanan Anda akan membaca dan mengupdate database Firestore sebagai respons terhadap peristiwa ini melalui API Firestore dan library klien.
Dalam siklus proses umum, hal berikut terjadi saat layanan Cloud Run dipicu oleh peristiwa Firestore:
Layanan menunggu perubahan pada dokumen tertentu.
Saat perubahan terjadi, layanan akan dipicu dan menjalankan tugasnya.
Layanan menerima objek data dengan snapshot dokumen yang terpengaruh. Untuk peristiwa
writeatauupdate, objek data berisi snapshot yang mewakili status dokumen sebelum dan setelah peristiwa pemicu.
Jenis peristiwa
Firestore mendukung peristiwa create, update, delete, dan write. Peristiwa write
mencakup semua perubahan pada dokumen.
| Jenis peristiwa | Pemicu |
|---|---|
google.cloud.firestore.document.v1.created (default) |
Dipicu saat dokumen ditulisi untuk pertama kalinya. |
google.cloud.firestore.document.v1.updated |
Dipicu saat dokumen sudah ada dan nilainya berubah. |
google.cloud.firestore.document.v1.deleted |
Dipicu saat dokumen yang memuat data dihapus. |
google.cloud.firestore.document.v1.written |
Dipicu saat dokumen dibuat, diperbarui, atau dihapus. |
Karakter pengganti ditulis dalam pemicu menggunakan tanda kurung kurawal, misalnya:
projects/YOUR_PROJECT_ID/databases/(default)/documents/collection/{document_wildcard}
Menentukan jalur dokumen
Untuk memicu layanan Anda, tentukan jalur dokumen yang akan diproses. Jalur dokumen harus berada dalam project Google Cloud yang sama dengan layanan.
Berikut adalah beberapa contoh jalur dokumen yang valid:
users/marie: pemicu valid. Memantau satu dokumen,/users/marie.users/{username}: pemicu valid. Memantau semua dokumen pengguna. Karakter pengganti digunakan untuk memantau semua dokumen dalam koleksi.users/{username}/addresses: pemicu tidak valid. Mengacu pada subkoleksiaddresses, bukan dokumen.users/{username}/addresses/home: pemicu valid. Memantau dokumen alamat rumah untuk semua pengguna.users/{username}/addresses/{addressId}: pemicu valid. Memantau semua dokumen alamat.users/{user=**}: pemicu valid. Memantau semua dokumen pengguna dan setiap dokumen dalam subkoleksi pada setiap dokumen pengguna seperti/users/userID/address/homeatau/users/userID/phone/work.
Karakter pengganti dan parameter
Jika tidak mengetahui secara spesifik dokumen yang ingin dipantau, gunakan {wildcard}, bukan ID dokumen:
users/{username}akan memproses perubahan pada semua dokumen pengguna.
Dalam contoh ini, saat kolom dalam dokumen pada users diubah, sistem akan mencocokkannya
dengan karakter pengganti yang disebut {username}.
Jika dokumen dalam users memiliki
subkoleksi, dan kolom di salah satu dokumen subkoleksi tersebut diubah, karakter pengganti {username}
tidak akan terpicu. Jika sasaran Anda adalah juga merespons peristiwa di subkoleksi, gunakan karakter pengganti multi-segmen {username=**}.
Kecocokan karakter pengganti diekstrak dari jalur dokumen. Anda dapat menentukan karakter pengganti sebanyak yang Anda inginkan untuk mengganti koleksi eksplisit atau ID dokumen. Anda dapat menggunakan maksimal satu karakter pengganti multi-segmen seperti {username=**}.
Struktur peristiwa
Pemicu ini memanggil layanan Anda dengan peristiwa yang mirip dengan:
{ "oldValue": { // Update and Delete operations only A Document object containing a pre-operation document snapshot }, "updateMask": { // Update operations only A DocumentMask object that lists changed fields. }, "value": { // A Document object containing a post-operation document snapshot } }
Setiap objek Document berisi satu atau beberapa objek Value. Lihat
dokumentasi Value
untuk referensi jenis.
Sebelum memulai
- Pastikan Anda telah menyiapkan project baru untuk Cloud Run seperti yang dijelaskan di halaman setup.
Aktifkan Artifact Registry, Cloud Build, Cloud Run Admin API, Eventarc, Firestore Cloud Logging, dan Pub/Sub API:
Peran yang diperlukan untuk akun deployer
Untuk mendapatkan izin yang Anda perlukan untuk memicu dari peristiwa Firestore, minta administrator Anda untuk memberi Anda peran IAM berikut di project Anda:
- Editor Cloud Build (
roles/cloudbuild.builds.editor) - Admin Cloud Run (
roles/run.admin) - Pemilik Datastore (
roles/datastore.owner) - Eventarc Admin (
roles/eventarc.admin) - Logs View Accessor (
roles/logging.viewAccessor) - Project IAM Admin (
roles/resourcemanager.projectIamAdmin) - Service Account Admin (
roles/iam.serviceAccountAdmin) - Service Account User (
roles/iam.serviceAccountUser) - Service Usage Admin (
roles/serviceusage.serviceUsageAdmin)
Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
Perhatikan bahwa secara default, izin Cloud Build mencakup izin untuk mengupload dan mendownload artefak Artifact Registry.
Menyiapkan database Firestore
Sebelum men-deploy layanan, Anda harus membuat database Firestore:
Buka halaman Data Firestore.
Pilih Buat Database.
Klik Native Mode, lalu pilih Continue.
Di kolom Name your database, masukkan ID Database, seperti
firestore-db.Di Location type, pilih Region dan pilih region tempat database Anda berada. Pilihan ini bersifat permanen.
Biarkan bagian Aturan aman sebagaimana adanya.
Klik Create database.
Model data Firestore terdiri dari koleksi yang berisi dokumen. Setiap dokumen berisi kumpulan key-value pair.
Membuat pemicu
Bergantung pada jenis layanan yang Anda deploy, Anda dapat:
Membuat pemicu untuk layanan
Setelah men-deploy layanan, Anda dapat mengonfigurasi pemicu menggunakan konsol Google Cloud , Google Cloud CLI, atau Terraform.
Konsol
Deploy layanan Cloud Run Anda menggunakan container atau dari sumber.
Di konsol Google Cloud , buka Cloud Run:
Dari daftar layanan, klik layanan yang ada.
Di halaman detail Service, buka tab Triggers.
Klik Tambahkan pemicu, lalu pilih Pemicu Firestore.
Di panel Eventarc trigger, ubah detail pemicu sebagai berikut:
Di kolom Nama pemicu, masukkan nama pemicu, atau gunakan nama default.
Pilih Jenis pemicu dari daftar untuk menentukan salah satu jenis pemicu berikut:
Sumber Google untuk menentukan pemicu bagi Pub/Sub, Cloud Storage, Firestore, dan penyedia peristiwa Google lainnya.
Pihak ketiga untuk berintegrasi dengan penyedia non-Google yang menawarkan sumber Eventarc. Untuk mengetahui informasi selengkapnya, lihat Peristiwa pihak ketiga di Eventarc.
Pilih Firestore dari daftar Event provider, untuk memilih produk yang menyediakan jenis peristiwa untuk memicu layanan Anda. Untuk mengetahui daftar penyedia peristiwa, lihat Penyedia dan tujuan peristiwa.
Pilih type=google.cloud.firestore.document.v1.created dari daftar Event type. Konfigurasi pemicu Anda bervariasi, bergantung pada jenis peristiwa yang didukung. Untuk mengetahui informasi selengkapnya, lihat Jenis peristiwa.
Di bagian Filter, pilih nilai database, operasi, dan atribut, atau gunakan pilihan default.
Jika kolom Region diaktifkan, pilih lokasi untuk pemicu Eventarc. Secara umum, lokasi pemicu Eventarc harus cocok dengan lokasi resource Google Cloud yang ingin Anda pantau peristiwanya. Dalam sebagian besar skenario, Anda juga harus men-deploy layanan di region yang sama. Lihat Memahami lokasi Eventarc untuk mengetahui detail selengkapnya tentang lokasi pemicu Eventarc.
Di kolom Service account, pilih akun layanan. Pemicu Eventarc ditautkan ke akun layanan untuk digunakan sebagai identitas saat memanggil layanan Anda. Akun layanan pemicu Eventarc Anda harus memiliki izin untuk memanggil layanan Anda. Secara default, Cloud Run menggunakan akun layanan default Compute Engine.
Secara opsional, tentukan jalur URL Layanan untuk mengirim permintaan masuk ke. Ini adalah jalur relatif di layanan tujuan tempat peristiwa untuk pemicu harus dikirim. Misalnya:
/,/route,route, danroute/subroute.Secara opsional, untuk mengaktifkan percobaan ulang jika upaya pengiriman gagal, centang kotak Enable retry on failure; jika tidak, perilaku default adalah satu upaya pengiriman tanpa percobaan ulang. Untuk mengetahui informasi selengkapnya, lihat Coba lagi peristiwa.
Setelah Anda melengkapi kolom yang wajib diisi, klik Simpan pemicu.
Setelah membuat pemicu, verifikasi kondisinya dengan memastikan bahwa ada tanda centang check_circle di tab Pemicu.
gcloud
Deploy layanan Cloud Run Anda menggunakan container atau dari sumber.
Jalankan perintah berikut untuk membuat pemicu yang memfilter dan merutekan peristiwa:
gcloud eventarc triggers create TRIGGER_NAME \ --location=LOCATION \ --destination-run-service=DESTINATION_RUN_SERVICE \ --destination-run-region=DESTINATION_RUN_REGION \ --event-filters="type=EVENT_FILTER_TYPE" \ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.comGanti kode berikut:
TRIGGER_NAME: ID pemicu atau ID yang memenuhi syarat sepenuhnya.LOCATION: lokasi pemicu Eventarc. Atau, Anda dapat menetapkan propertieventarc/location; misalnya,gcloud config set eventarc/location us-central1.Untuk menghindari masalah performa dan residensi data, lokasi harus cocok dengan lokasi layanan Google Cloud yang menghasilkan peristiwa. Untuk mengetahui informasi selengkapnya, lihat Lokasi Eventarc.
-
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 perlu 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) lokasi Cloud Run 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.SERVICE_ACCOUNT_NAME: nama akun layanan yang dikelola pengguna Anda.PROJECT_ID: Google Cloud Project ID Anda.
Catatan:
- Setelah pemicu dibuat, jenis filter peristiwa tidak dapat diubah. Untuk jenis peristiwa yang berbeda, Anda harus membuat pemicu baru.
--event-filters=type=google.cloud.firestore.document.v1.writtenmenentukan bahwa fungsi dipicu saat dokumen dibuat, diperbarui, atau dihapus, sesuai dengan jenis peristiwa.--event-filters=database='(default)'menentukan database Firebase. Untuk nama database default, gunakan(default).--event-filters-path-pattern=document='users/{username}'memberikan pola jalur dokumen yang harus dipantau untuk melihat perubahan yang relevan. Pola jalur ini menyatakan bahwa semua dokumen dalam koleksiusersharus dipantau. Untuk mengetahui informasi selengkapnya, lihat Memahami pola jalur.- Atau, untuk menentukan satu upaya pengiriman peristiwa tanpa percobaan ulang, gunakan
flag
--max-retry-attempts. Satu-satunya nilai yang valid adalah1. Jika Anda menghilangkan flag, perilaku percobaan ulang standar akan berlaku. Untuk mengetahui informasi selengkapnya, lihat Coba lagi peristiwa. - Tersedia flag lainnya. Untuk informasi selengkapnya, lihat
gcloud eventarc triggers create.
Terraform
Untuk membuat pemicu Eventarc bagi layanan Cloud Run, lihat Membuat pemicu menggunakan Terraform.
Membuat pemicu untuk fungsi
Setelah men-deploy fungsi, Anda dapat mengonfigurasi pemicu menggunakan konsol Google Cloud , Google Cloud CLI, atau Terraform.
Konsol
Saat menggunakan konsol Google Cloud untuk membuat fungsi, Anda juga dapat menambahkan pemicu ke fungsi. Ikuti langkah-langkah berikut untuk membuat pemicu bagi fungsi Anda:
Di konsol Google Cloud , buka Cloud Run:
Klik Write a function, lalu masukkan detail fungsi. Untuk informasi selengkapnya tentang cara mengonfigurasi fungsi selama deployment, lihat Men-deploy fungsi.
Di bagian Pemicu, klik Tambahkan pemicu.
Pilih Pemicu Firestore.
Di panel Eventarc trigger, ubah detail pemicu sebagai berikut:
Masukkan nama pemicu di kolom Nama pemicu, atau gunakan nama default.
Pilih Jenis pemicu dari daftar:
Sumber Google untuk menentukan pemicu bagi Pub/Sub, Cloud Storage, Firestore, dan penyedia peristiwa Google lainnya.
Pihak ketiga untuk berintegrasi dengan penyedia non-Google yang menawarkan sumber Eventarc. Untuk mengetahui informasi selengkapnya, lihat Peristiwa pihak ketiga di Eventarc.
Pilih Firestore dari daftar Event provider, untuk memilih produk yang menyediakan jenis peristiwa untuk memicu fungsi Anda. Untuk mengetahui daftar penyedia peristiwa, lihat Penyedia dan tujuan peristiwa.
Pilih type=google.cloud.firestore.document.v1.created dari daftar Event type. Konfigurasi pemicu Anda bervariasi, bergantung pada jenis peristiwa yang didukung. Untuk mengetahui informasi selengkapnya, lihat Jenis peristiwa.
Di bagian Filter, pilih nilai database, operasi, dan atribut, atau gunakan pilihan default.
Jika kolom Region diaktifkan, pilih lokasi untuk pemicu Eventarc. Secara umum, lokasi pemicu Eventarc harus cocok dengan lokasi resourceGoogle Cloud yang ingin Anda pantau peristiwanya. Dalam sebagian besar skenario, Anda juga harus men-deploy fungsi di region yang sama. Lihat Memahami lokasi Eventarc untuk mengetahui detail selengkapnya tentang lokasi pemicu Eventarc.
Di kolom Service account, pilih akun layanan. Pemicu Eventarc ditautkan ke akun layanan untuk digunakan sebagai identitas saat memanggil fungsi Anda. Akun layanan pemicu Eventarc Anda harus memiliki izin untuk memanggil fungsi Anda. Secara default, Cloud Run menggunakan akun layanan default Compute Engine.
Secara opsional, tentukan jalur URL Layanan untuk mengirim permintaan masuk ke. Ini adalah jalur relatif di layanan tujuan tempat peristiwa untuk pemicu harus dikirim. Misalnya:
/,/route,route, danroute/subroute.Secara opsional, untuk mengaktifkan percobaan ulang jika upaya pengiriman gagal, centang kotak Enable retry on failure; jika tidak, perilaku default adalah satu upaya pengiriman tanpa percobaan ulang. Untuk mengetahui informasi selengkapnya, lihat Coba lagi peristiwa.
Setelah Anda melengkapi kolom yang wajib diisi, klik Simpan pemicu.
Klik Create.
Di tab Source, edit kode sumber jika diperlukan, lalu pilih Save and redeploy.
gcloud
Saat membuat fungsi menggunakan gcloud CLI, Anda harus men-deploy fungsi terlebih dahulu, lalu membuat pemicu. Ikuti langkah-langkah berikut untuk membuat pemicu bagi fungsi Anda:
Jalankan perintah berikut di direktori yang berisi kode contoh untuk men-deploy fungsi Anda:
gcloud run deploy FUNCTION \ --source . \ --function FUNCTION_ENTRYPOINT \ --base-image BASE_IMAGE_ID \ --region REGIONGanti kode berikut:
FUNCTION: nama fungsi yang Anda deploy. Anda dapat menghilangkan parameter ini sepenuhnya, tetapi Anda akan diminta untuk memasukkan nama jika menghilangkannya.FUNCTION_ENTRYPOINT: titik entri ke fungsi Anda dalam kode sumber. Ini adalah kode yang dijalankan Cloud Run saat fungsi Anda berjalan. Nilai flag ini harus berupa nama fungsi atau nama class yang sepenuhnya memenuhi syarat yang ada dalam kode sumber Anda.BASE_IMAGE_ID: lingkungan image dasar untuk fungsi Anda. Untuk mengetahui detail selengkapnya tentang image dasar dan paket yang disertakan dalam setiap image, lihat Image dasar runtime.REGION: Google Cloud region tempat Anda ingin men-deploy fungsi Anda. Contoh,europe-west1.
Jalankan perintah berikut untuk membuat pemicu yang memfilter dan merutekan peristiwa:
gcloud eventarc triggers create TRIGGER_NAME \ --location=LOCATION \ --destination-run-service=FUNCTION \ --destination-run-region=DESTINATION_RUN_REGION \ --event-filters="type=EVENT_FILTER_TYPE" \ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.comGanti kode berikut:
TRIGGER_NAME: ID pemicu atau ID yang memenuhi syarat sepenuhnya.LOCATION: lokasi pemicu Eventarc. Atau, Anda dapat menetapkan propertieventarc/location; misalnya,gcloud config set eventarc/location us-central1.Untuk menghindari masalah performa dan residensi data, lokasi harus cocok dengan lokasi layanan Google Cloud yang menghasilkan peristiwa. Untuk mengetahui informasi selengkapnya, lihat Lokasi Eventarc.
-
FUNCTION: nama fungsi Cloud Run yang di-deploy yang menerima peristiwa untuk pemicu. -
DESTINATION_RUN_REGION: (opsional) lokasi Cloud Run tempat fungsi Cloud Run tujuan dapat ditemukan. Jika tidak ditentukan, diasumsikan bahwa fungsi 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.SERVICE_ACCOUNT_NAME: nama akun layanan yang dikelola pengguna Anda.PROJECT_ID: Google Cloud Project ID Anda.
Catatan:
- Setelah pemicu dibuat, jenis filter peristiwa tidak dapat diubah. Untuk jenis peristiwa yang berbeda, Anda harus membuat pemicu baru.
--event-filters=type=google.cloud.firestore.document.v1.writtenmenentukan bahwa fungsi dipicu saat dokumen dibuat, diperbarui, atau dihapus, sesuai dengan jenis peristiwa.--event-filters=database='(default)'menentukan database Firebase. Untuk nama database default, gunakan(default).--event-filters-path-pattern=document='users/{username}'memberikan pola jalur dokumen yang harus dipantau untuk melihat perubahan yang relevan. Pola jalur ini menyatakan bahwa semua dokumen dalam koleksiusersharus dipantau. Untuk mengetahui informasi selengkapnya, lihat Memahami pola jalur.- Atau, untuk menentukan satu upaya pengiriman peristiwa tanpa percobaan ulang, gunakan
flag
--max-retry-attempts. Satu-satunya nilai yang valid adalah1. Jika Anda menghilangkan flag, perilaku percobaan ulang standar akan berlaku. Untuk mengetahui informasi selengkapnya, lihat Coba lagi peristiwa. - Tersedia flag lainnya. Untuk informasi selengkapnya, lihat
gcloud eventarc triggers create.
Terraform
Untuk membuat pemicu Eventarc bagi fungsi Cloud Run, lihat Membuat pemicu menggunakan Terraform.
Lihat Memperluas Firestore dengan pemicu peristiwa menggunakan Cloud Run Functions untuk mengetahui informasi selengkapnya.
Langkah berikutnya
- Lihat contoh fungsi yang dipicu saat Anda membuat perubahan pada dokumen di dalam koleksi tertentu.