Panduan ini menunjukkan contoh fungsi yang dipicu saat Anda membuat perubahan pada dokumen di dalam koleksi tertentu.
Sebelum memulai
Sebelum menjalankan contoh kode 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.
Klik tab untuk mendapatkan petunjuk cara menggunakan alat pilihan Anda.
Konsol
Saat menggunakan konsol Google Cloud untuk membuat fungsi, Anda juga dapat menambahkan pemicu ke fungsi. Ikuti langkah-langkah berikut untuk membuat pemicu fungsi Anda:
Di konsol Google Cloud, buka Cloud Run:
Klik Tulis fungsi, 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 untuk pemicu di kolom Nama pemicu, atau gunakan nama default.
Pilih Jenis pemicu dari daftar untuk menentukan salah satu jenis pemicu berikut:
Sumber Google untuk menentukan pemicu untuk Pub/Sub, Cloud Storage, Firestore, dan penyedia peristiwa Google lainnya.
Pihak ketiga untuk berintegrasi dengan penyedia non-Google yang menawarkan sumber Eventarc. Untuk informasi selengkapnya, lihat Peristiwa pihak ketiga di Eventarc.
Pilih Firestore dari daftar Penyedia peristiwa, untuk memilih produk yang menyediakan jenis peristiwa untuk memicu fungsi Anda. Untuk daftar penyedia peristiwa, lihat Penyedia dan tujuan peristiwa.
Pilih type=google.cloud.firestore.document.v1.written dari daftar Jenis peristiwa. Konfigurasi pemicu Anda bervariasi, bergantung pada jenis peristiwa yang didukung. Untuk informasi selengkapnya, lihat Jenis peristiwa.
Di bagian Filter, pilih database, operasi, dan nilai atribut, atau gunakan pilihan default.
Jika kolom Region diaktifkan, pilih location 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 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.
Jika perlu, tentukan Jalur URL Layanan untuk mengirim permintaan masuk. Ini adalah jalur relatif di layanan tujuan tempat peristiwa untuk pemicu harus dikirim. Misalnya:
/
,/route
,route
, danroute/subroute
.
Setelah Anda melengkapi kolom yang wajib diisi, klik Simpan pemicu.
gcloud
Saat membuat fungsi menggunakan gcloud CLI, Anda harus deploy fungsi terlebih dahulu, lalu membuat pemicu. Ikuti langkah-langkah berikut untuk membuat pemicu fungsi Anda:
Jalankan perintah berikut di direktori yang berisi kode contoh untuk men-deploy fungsi Anda:
gcloud beta run deploy FUNCTION \ --source . \ --function FUNCTION_ENTRYPOINT \ --base-image BASE_IMAGE_ID \ --region REGION
Ganti:
FUNCTION dengan nama fungsi yang Anda deployment. Anda dapat menghilangkan parameter ini sepenuhnya, tetapi Anda akan diminta untuk memasukkan nama jika mengabaikannya.
FUNCTION_ENTRYPOINT dengan 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 dengan 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 dengan region Google Cloud tempat Anda ingin men-deploy fungsi. Misalnya,
us-central1
.
Jalankan perintah berikut untuk membuat pemicu yang memfilter peristiwa:
gcloud eventarc triggers create TRIGGER_NAME \ --location=EVENTARC_TRIGGER_LOCATION \ --destination-run-service=FUNCTION \ --destination-run-region=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='users/{username}' \ --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.com
Ganti:
TRIGGER_NAME dengan nama untuk pemicu Anda.
EVENTARC_TRIGGER_LOCATION dengan 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 fungsi di region yang sama. Untuk informasi selengkapnya, lihat Lokasi Eventarc.
FUNCTION dengan nama fungsi yang Anda deployment.
REGION dengan region Cloud Run fungsi.
PROJECT_NUMBER dengan nomor project Google Cloud Anda. Pemicu Eventarc ditautkan ke akun layanan untuk digunakan sebagai identitas saat memanggil fungsi Anda. Akun layanan pemicu Eventarc harus memiliki izin untuk memanggil fungsi Anda. Secara default, Cloud Run menggunakan Akun layanan komputasi default.
Flag
event-filters
menentukan filter peristiwa yang dipantau pemicu. Peristiwa yang cocok dengan semuaevent-filters
, filter akan memicu panggilan ke fungsi Anda. Setiap pemicu harus memiliki jenis peristiwa yang didukung. Anda tidak dapat mengubah jenis filter peristiwa setelah pembuatan. Untuk mengubah jenis filter peristiwa, Anda harus membuat pemicu baru dan menghapus pemicu lama. Secara opsional, Anda dapat mengulangi tanda--event-filters
dengan filter yang didukung dalam bentukATTRIBUTE=VALUE
untuk menambahkan filter lainnya.
Gunakan kolom lainnya sebagaimana adanya:
--event-filters=type=google.cloud.firestore.document.v1.written
menentukan bahwa fungsi dipicu saat dokumen dibuat, diupdate, atau dihapus, sesuai dengan jenis peristiwagoogle.cloud.firestore.document.v1.written
.--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 koleksiusers
harus dipantau. Untuk mengetahui informasi selengkapnya, lihat Memahami pola jalur.
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
users
sebagai ID koleksi.Untuk mulai menambahkan dokumen pertama koleksi, di bagian Tambahkan dokumen pertamanya, terima ID Dokumen yang dihasilkan secara 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 halaman Ringkasan Cloud Run di Google Cloud Console untuk membuka halaman Detail layanan.
Pilih tab Logs, lalu cari string ini:
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.
Klik tab untuk mendapatkan petunjuk cara menggunakan alat pilihan Anda.
Konsol
Saat menggunakan konsol Google Cloud untuk membuat fungsi, Anda juga dapat menambahkan pemicu ke fungsi. Ikuti langkah-langkah berikut untuk membuat pemicu fungsi Anda:
Di konsol Google Cloud, buka Cloud Run:
Klik Tulis fungsi, 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 untuk pemicu di kolom Nama pemicu, atau gunakan nama default.
Pilih Jenis pemicu dari daftar untuk menentukan salah satu jenis pemicu berikut:
Sumber Google untuk menentukan pemicu untuk Pub/Sub, Cloud Storage, Firestore, dan penyedia peristiwa Google lainnya.
Pihak ketiga untuk berintegrasi dengan penyedia non-Google yang menawarkan sumber Eventarc. Untuk informasi selengkapnya, lihat Peristiwa pihak ketiga di Eventarc.
Pilih Firestore dari daftar Penyedia peristiwa, untuk memilih produk yang menyediakan jenis peristiwa untuk memicu fungsi Anda. Untuk daftar penyedia peristiwa, lihat Penyedia dan tujuan peristiwa.
Pilih type=google.cloud.firestore.document.v1.written dari daftar Jenis peristiwa. Konfigurasi pemicu Anda bervariasi, bergantung pada jenis peristiwa yang didukung. Untuk informasi selengkapnya, lihat Jenis peristiwa.
Di bagian Filter, pilih database, operasi, dan nilai atribut, atau gunakan pilihan default.
Jika kolom Region diaktifkan, pilih location 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 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.
Jika perlu, tentukan Jalur URL Layanan untuk mengirim permintaan masuk. Ini adalah jalur relatif di layanan tujuan tempat peristiwa untuk pemicu harus dikirim. Misalnya:
/
,/route
,route
, danroute/subroute
.
Setelah Anda melengkapi kolom yang wajib diisi, klik Simpan pemicu.
gcloud
Saat membuat fungsi menggunakan gcloud CLI, Anda harus deploy fungsi terlebih dahulu, lalu membuat pemicu. Ikuti langkah-langkah berikut untuk membuat pemicu fungsi Anda:
Jalankan perintah berikut di direktori yang berisi kode contoh untuk men-deploy fungsi Anda:
gcloud beta run deploy FUNCTION \ --source . \ --function FUNCTION_ENTRYPOINT \ --base-image BASE_IMAGE_ID \ --region REGION
Ganti:
FUNCTION dengan nama fungsi yang Anda deployment. Anda dapat menghilangkan parameter ini sepenuhnya, tetapi Anda akan diminta untuk memasukkan nama jika mengabaikannya.
FUNCTION_ENTRYPOINT dengan 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 dengan 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 dengan region Google Cloud tempat Anda ingin men-deploy fungsi. Misalnya,
us-central1
.
Jalankan perintah berikut untuk membuat pemicu yang memfilter peristiwa:
gcloud eventarc triggers create TRIGGER_NAME \ --location=EVENTARC_TRIGGER_LOCATION \ --destination-run-service=FUNCTION \ --destination-run-region=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=PROJECT_NUMBER-compute@developer.gserviceaccount.com
Ganti:
TRIGGER_NAME dengan nama untuk pemicu Anda.
EVENTARC_TRIGGER_LOCATION dengan 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 fungsi di region yang sama. Untuk informasi selengkapnya, lihat Lokasi Eventarc.
FUNCTION dengan nama fungsi yang Anda deployment.
REGION dengan region Cloud Run fungsi.
PROJECT_NUMBER dengan nomor project Google Cloud Anda. Pemicu Eventarc ditautkan ke akun layanan untuk digunakan sebagai identitas saat memanggil fungsi Anda. Akun layanan pemicu Eventarc harus memiliki izin untuk memanggil fungsi Anda. Secara default, Cloud Run menggunakan Akun layanan komputasi default.
Flag
event-filters
menentukan filter peristiwa yang dipantau pemicu. Peristiwa yang cocok dengan semuaevent-filters
, filter akan memicu panggilan ke fungsi Anda. Setiap pemicu harus memiliki jenis peristiwa yang didukung. Anda tidak dapat mengubah jenis filter peristiwa setelah pembuatan. Untuk mengubah jenis filter peristiwa, Anda harus membuat pemicu baru dan menghapus pemicu lama. Secara opsional, Anda dapat mengulangi tanda--event-filters
dengan filter yang didukung dalam bentukATTRIBUTE=VALUE
untuk menambahkan filter lainnya.
Gunakan kolom lainnya sebagaimana adanya:
--event-filters=type=google.cloud.firestore.document.v1.written
menentukan 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 koleksimessages
harus 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:
Klik Mulai koleksi.
Tentukan
messages
sebagai ID koleksi.Untuk mulai menambahkan dokumen pertama koleksi, di bagian Tambahkan dokumen pertamanya, terima ID Dokumen yang dihasilkan secara otomatis.
Untuk memicu fungsi yang di-deploy, tambahkan dokumen dengan Nama kolom adalah
original
dan Nilai kolom adalahminka
.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 otomatis menghapus pemicu untuk database tersebut. Pemicu berhenti mengirim peristiwa, tetapi akan tetap ada sampai Anda menghapus pemicu.