Dengan pemicu Firestore, Anda dapat otomatis menjalankan fungsi setiap kali dokumen dalam koleksi tertentu dibuat, diperbarui, atau dihapus. Hal ini membantu Anda memproses perubahan data secara real time, menyinkronkan sistem eksternal, dan mengotomatiskan alur kerja backend.
Sebelum memulai
Sebelum menjalankan kode contoh dalam panduan ini, Anda harus melakukan hal berikut:
- Mengaktifkan API dan memberikan peran yang diperlukan untuk men-deploy fungsi
- Menyiapkan database Firestore
Contoh
Contoh berikut menunjukkan cara menulis fungsi yang merespons pemicu Firestore.
Contoh 1: Fungsi Hello Firestore
Contoh berikut mencetak kolom peristiwa Firestore yang memicu:
Node.js
Python
Go
Java
C#
Men-deploy fungsi Hello Firestore
Jika Anda belum melakukannya, siapkan database Firestore.
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 untuk fungsi Anda:
Di konsol Google Cloud , buka Cloud Run:
Klik Write a function, dan masukkan detail fungsi. Untuk mengetahui informasi selengkapnya tentang cara mengonfigurasi fungsi selama deployment, lihat Men-deploy fungsi.
Di bagian Trigger, klik Add trigger.
Pilih Pemicu Firestore.
Di panel Eventarc trigger, ubah detail pemicu sebagai berikut:
Masukkan nama untuk pemicu di kolom Trigger name, 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 Cloud 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.written dari daftar Event type. Konfigurasi pemicu Anda bervariasi, bergantung pada jenis peristiwa yang didukung. Untuk mengetahui informasi selengkapnya, lihat Jenis peristiwa.
Biarkan kolom Event data content type apa adanya.
Di bagian Filters, pilih database, operasi, dan nilai 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 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.
Jika perlu, tentukan Service URL path untuk mengirim permintaan masuk. Ini adalah jalur relatif pada 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 defaultnya adalah satu upaya pengiriman tanpa percobaan ulang. Untuk mengetahui informasi selengkapnya, lihat Mencoba ulang 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 untuk 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 mengabaikannya.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: region Google Cloudtempat Anda ingin men-deploy fungsi. 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" \ --event-filters=database='(default)' \ --event-data-content-type=application/protobuf \ --event-filters-path-pattern=document='users/{username}' \ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.comGanti kode berikut:
TRIGGER_NAME: ID pemicu atau ID yang sepenuhnya memenuhi syarat.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, fungsi diasumsikan berada di region yang sama dengan pemicu. EVENT_FILTER_TYPE: ID peristiwa. Peristiwa akan 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 terkelola pengguna Anda.PROJECT_ID: Project ID Google Cloud 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, diupdate, 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 Mencoba ulang peristiwa. - Flag lainnya tersedia. Untuk informasi selengkapnya, lihat
gcloud eventarc triggers create.
Terraform
Untuk membuat pemicu Eventarc untuk fungsi Cloud Run, lihat Membuat pemicu menggunakan Terraform.
Menguji fungsi Hello Firestore
Untuk menguji fungsi Hello Firestore, siapkan koleksi bernama
users di database Firestore Anda:
Di konsol Google Cloud , buka halaman database Firestore:
Klik Mulai koleksi.
Tentukan
userssebagai ID koleksi.Untuk mulai menambahkan dokumen pertama koleksi, di bagian Add its first document, terima Document ID yang dibuat otomatis.
Tambahkan setidaknya satu kolom untuk dokumen, dengan menentukan nama dan nilai. Misalnya, di Nama kolom, masukkan
username, dan di Nilai kolom, masukkanrowan.Bila telah selesai, klik Simpan.
Tindakan ini akan membuat dokumen baru, sehingga memicu fungsi Anda.
Untuk mengonfirmasi bahwa fungsi Anda dipicu, klik nama fungsi tertaut di Google Cloud konsol halaman Ringkasan Cloud Run untuk membuka halaman Detail layanan.
Di tab Observability, pilih tab Logs dan cari string berikut:
Function triggered by change to: //firestore.googleapis.com/projects/your-project-id/databases/(default)'
Contoh 2: Fungsi Mengonversi ke Huruf Besar
Contoh berikut mengambil nilai yang ditambahkan oleh pengguna, mengubah string di lokasi tersebut menjadi huruf besar, dan mengganti nilai dengan string huruf besar:
Node.js
Gunakan protobufjs untuk mendekode data peristiwa. Sertakan google.events.cloud.firestore.v1
data.proto
dalam sumber Anda.
Python
Go
Java
C#
Men-deploy fungsi Mengonversi ke Huruf Besar
Jika Anda belum melakukannya, siapkan database Firestore.
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 untuk fungsi Anda:
Di konsol Google Cloud , buka Cloud Run:
Klik Write a function, dan masukkan detail fungsi. Untuk mengetahui informasi selengkapnya tentang cara mengonfigurasi fungsi selama deployment, lihat Men-deploy fungsi.
Di bagian Trigger, klik Add trigger.
Pilih Pemicu Firestore.
Di panel Eventarc trigger, ubah detail pemicu sebagai berikut:
Masukkan nama untuk pemicu di kolom Trigger name, 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.written dari daftar Event type. Konfigurasi pemicu Anda bervariasi, bergantung pada jenis peristiwa yang didukung. Untuk mengetahui informasi selengkapnya, lihat Jenis peristiwa.
Biarkan kolom Event data content type apa adanya.
Di bagian Filters, pilih database, operasi, dan nilai atribut, atau gunakan pilihan default. Jika Anda memberi nama database, masukkan nama tersebut di kolom Attribute value 1.
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 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.
Jika perlu, tentukan Service URL path untuk mengirim permintaan masuk. Ini adalah jalur relatif pada layanan tujuan tempat peristiwa untuk pemicu harus dikirim. Misalnya:
/,/route,route, danroute/subroute.Atau, untuk mengaktifkan percobaan ulang jika upaya pengiriman gagal, centang kotak Enable retry on failure; jika tidak, perilaku defaultnya adalah satu upaya pengiriman tanpa percobaan ulang. Untuk mengetahui informasi selengkapnya, lihat Mencoba ulang 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 untuk 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 mengabaikannya.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: region Google Cloudtempat Anda ingin men-deploy fungsi. 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=google.cloud.firestore.document.v1.written \ --event-filters=database='(default)' \ --event-data-content-type=application/protobuf \ --event-filters-path-pattern=document='messages/{pushId}' \ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.comGanti kode berikut:
TRIGGER_NAME: ID pemicu atau ID yang sepenuhnya memenuhi syarat.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, fungsi diasumsikan berada di region yang sama dengan pemicu. EVENT_FILTER_TYPE: ID peristiwa. Peristiwa akan 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 terkelola pengguna Anda.PROJECT_ID: Project ID Google Cloud 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, diupdate, 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 Mencoba ulang peristiwa. - Flag lainnya tersedia. Untuk informasi selengkapnya, lihat
gcloud eventarc triggers create.
Terraform
Untuk membuat pemicu Eventarc untuk fungsi Cloud Run, lihat Membuat pemicu menggunakan Terraform.
Gunakan kolom lainnya sebagaimana adanya:
--event-filters=type=google.cloud.firestore.document.v1.writtenmenentukan bahwa fungsi dipicu saat dokumen dibuat, diupdate, atau dihapus, sesuai dengan jenis peristiwagoogle.cloud.firestore.document.v1.written.--event-filters=database='(default)'menentukan database Firestore. Untuk nama database default, gunakan(default).--event-filters-path-pattern=document='messages/{pushId}'memberikan pola jalur dokumen yang harus dipantau untuk melihat perubahan yang relevan. Pola jalur ini menyatakan bahwa semua dokumen dalam koleksimessagesharus dipantau. Untuk mengetahui informasi selengkapnya, lihat Memahami pola jalur.
Menguji fungsi Mengonversi ke Huruf Besar
Untuk menguji fungsi Mengonversi ke Huruf Besar yang baru saja Anda deploy, siapkan koleksi bernama messages di database Firestore Anda:
Di konsol Google Cloud , buka halaman database Firestore:
Pilih ID Database untuk database Firestore Anda.
Klik Mulai koleksi.
Tentukan
messagessebagai ID koleksi.Untuk mulai menambahkan dokumen pertama koleksi, di bagian Add its first document, terima Document ID yang dibuat otomatis.
Untuk memicu fungsi yang di-deploy, tambahkan dokumen dengan Field name
originaldan Field valueminka.Saat menyimpan dokumen, Anda dapat melihat kata dalam huruf kecil di kolom nilai yang dikonversi menjadi huruf besar.
Jika kemudian Anda mengedit nilai kolom agar berisi huruf kecil, hal tersebut akan memicu fungsi lagi, dan mengonversi semua huruf kecil menjadi huruf besar.
Batasan untuk fungsi
- Pengurutan tidak dijamin. Perubahan cepat dapat memicu pemanggilan fungsi dalam urutan yang tidak terduga.
- Peristiwa dikirim setidaknya satu kali, tetapi satu peristiwa dapat menghasilkan beberapa pemanggilan fungsi. Hindari mengandalkan mekanisme tepat satu kali, dan tulis fungsi idempoten.
- Pemicu dikaitkan dengan satu database. Anda tidak dapat membuat pemicu yang cocok dengan beberapa database.
- Menghapus database tidak secara otomatis menghapus pemicu untuk database tersebut. Pemicu berhenti mengirim peristiwa, tetapi akan tetap ada sampai Anda menghapus pemicu.