Halaman ini menunjukkan cara membuat pemicu Eventarc sehingga layanan Cloud Run dapat menerima peristiwa dari layanan Google Cloud lain.
Eventarc adalah Google Cloud layanan yang memungkinkan Anda membangun arsitektur berbasis peristiwa tanpa harus menerapkan, menyesuaikan, atau memelihara infrastruktur yang mendasarinya.
Anda dapat membuat pemicu Eventarc dengan menentukan filter untuk pemicu dan mengonfigurasi pemilihan rute peristiwa, termasuk sumber peristiwa dan layanan Cloud Run target. Saat peristiwa atau serangkaian peristiwa yang ditentukan cocok dengan filter, layanan Cloud Run Anda akan otomatis dipanggil sebagai respons terhadap peristiwa tersebut. Layanan yang menggunakan pemicu Eventarc disebut layanan berbasis peristiwa (event-driven service). Peristiwa yang dikirim ke layanan Cloud Run Anda diterima dalam bentuk permintaan HTTP.
Jenis peristiwa berikut dapat memicu permintaan ke layanan Anda:
- Log audit yang cocok dengan kriteria filter pemicu
- Peristiwa langsung seperti update pada bucket Cloud Storage
- Pesan langsung yang diterbitkan ke topik Pub/Sub
Lokasi pemicu
Saat membuat pemicu Eventarc, Anda menentukan lokasi untuk pemicu tersebut. Ini harus sesuai dengan lokasi sumber daya Google Cloud yang ingin Anda pantau untuk peristiwa. Dalam sebagian besar skenario, Anda juga harus men-deploy layanan Cloud Run berbasis peristiwa di region yang sama. Untuk informasi selengkapnya, lihat Memahami lokasi Eventarc.
Identitas pemicu
Saat membuat pemicu Eventarc, Anda menentukan akun layanan Identity and Access Management (IAM) untuk pemicu tersebut. Pemicu menggunakan akun layanan ini sebagai identitas defaultnya. Kami menyarankan Anda untuk menentukan akun layanan yang dikelola pengguna dan memberikan izin minimum yang diperlukan.
Sebelum memulai
Aktifkan Artifact Registry API, Cloud Build API, Cloud Run Admin API, dan Eventarc API:
Membuat pemicu untuk layanan
Setelah menerapkan layanan, Anda dapat mengkonfigurasi pemicu menggunakan Google Cloud konsol, 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 salah satu opsi.
Di panel Eventarc trigger, ubah detail pemicu sebagai berikut:
Pada kolom Nama pemicu, masukkan nama untuk 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 penyedia peristiwa dari daftar Penyedia peristiwa, untuk memilih produk yang menyediakan jenis peristiwa untuk memicu layanan Anda. Untuk mengetahui daftar penyedia peristiwa, lihat Penyedia dan tujuan peristiwa.
Pilih jenis acara dari daftar Jenis acara. Konfigurasi pemicu Anda bervariasi, bergantung pada jenis peristiwa yang didukung. Untuk mengetahui informasi selengkapnya, lihat Jenis peristiwa.
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 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 menyaring dan mengarahkan 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" \ --max-retry-attempts=1 \ --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. Alternatifnya, Anda dapat mengatur propertieventarc/location; misalnya,gcloud config set eventarc/location us-central1.Untuk menghindari masalah kinerja dan residensi data, lokasi harus sesuai dengan lokasi Google Cloud Layanan 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:
- 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_TYPEtidak 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. - 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 tersebut, 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 menerapkan sebuah fungsi, Anda dapat mengkonfigurasi pemicu menggunakan Google Cloud konsol, Google Cloud CLI, atau Terraform.
Konsol
Saat Anda menggunakan Google Cloud Untuk membuat fungsi, Anda dapat menambahkan pemicu ke fungsi tersebut melalui konsol. 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 Trigger, klik Tambahkan pemicu.
Pilih salah satu opsi.
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:
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 penyedia peristiwa dari daftar Penyedia peristiwa, untuk memilih produk yang menyediakan jenis peristiwa untuk memicu fungsi Anda. Untuk mengetahui daftar penyedia peristiwa, lihat Penyedia dan tujuan peristiwa.
Pilih jenis acara dari daftar Jenis acara. Konfigurasi pemicu Anda bervariasi, bergantung pada jenis peristiwa yang didukung. Untuk mengetahui informasi selengkapnya, lihat Jenis peristiwa.
Jika kolom Region diaktifkan, pilih location untuk pemicu Eventarc. Secara umum, lokasi pemicu Eventarc harus sesuai dengan lokasi sumber dayaGoogle Cloud yang ingin Anda pantau untuk peristiwa. 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 dihubungkan 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 informasi selengkapnya, lihat Coba ulang acara.
Setelah Anda melengkapi kolom yang diperlukan, klik Simpan pemicu.
Klik Create.
Di tab Sumber, edit kode sumber jika diperlukan, lalu pilih Simpan dan sebarkan ulang.
gcloud
Saat Anda membuat fungsi menggunakan gcloud CLI, Anda harus terlebih dahulu men-deploy fungsi Anda, 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 sebarkan. 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" \ --max-retry-attempts=1 \ --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. Alternatifnya, Anda dapat mengatur propertieventarc/location; misalnya,gcloud config set eventarc/location us-central1.Untuk menghindari masalah kinerja dan residensi data, lokasi harus sesuai dengan lokasi Google Cloud Layanan 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:
- 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_TYPEtidak 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. - 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 tersebut, 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.
Menetapkan batas waktu konfirmasi Pub/Sub
Fungsi Cloud Run berbasis peristiwa diimplementasikan menggunakan Eventarc
bersama dengan langganan Pub/Sub. Secara default, batas waktu
konfirmasi (ack)
langganan Pub/Sub ini adalah 10 detik. Setelan ini tidak cukup
untuk banyak fungsi, dan dapat menyebabkan eksekusi duplikat yang tidak diinginkan.
Kami menyarankan Anda untuk menetapkan batas waktu ack untuk layanan atau fungsi Anda ke nilai maksimum 600 detik sebagai berikut:
Konsol
Setelah men-deploy fungsi, ikuti langkah-langkah berikut untuk mengubah batas waktu
ack fungsi:
Di konsol Google Cloud , buka Cloud Run:
Temukan fungsi yang ingin Anda update dalam daftar Layanan, lalu klik untuk membuka detail fungsi tersebut.
Buka tab Pemicu.
Klik nama pemicu untuk membuka Detail pemicu.
Klik tautan Topik untuk membuka panel pengeditan topik.
Klik nama ID Langganan untuk membuka panel langganan, lalu klik Edit di bagian atas halaman.
Tetapkan nilai untuk Batas Waktu Konfirmasi menjadi 600, lalu klik Perbarui untuk menyimpan perubahan.
gcloud
Perbarui batas waktu ack per pemicu ke nilai maksimum 600 detik.
Perhatikan bahwa perintah berikut mereferensikan variabel (TRIGGER_NAME dan
LOCATION) yang nilainya Anda tetapkan pada langkah sebelumnya.
## Per Cloud Run function: # Update Ack Deadline to max (600s) SUBSCRIPTION_ID=$(gcloud eventarc triggers describe "$TRIGGER_NAME" --location $LOCATION --format json | jq -r '.transport.pubsub.subscription') gcloud pubsub subscriptions update "$SUBSCRIPTION_ID" --ack-deadline=600
Lakukan update massal pada semua pemicu layanan dan fungsi untuk menetapkan batas waktu
ack menjadi 600 detik:
### Match all Cloud Run service triggers and update all deadlines to 600s (max timeout) ### This will change ALL Cloud Run services and Cloud Run functions TRIGGER_NAMES=($(gcloud eventarc triggers list | awk '/Cloud Run service/ {print $1}')) if [ ${#TRIGGER_NAMES[@]} -eq 0 ]; then echo "No matching triggers found" fi for trigger in "${TRIGGER_NAMES[@]}"; do echo "Updating ack deadline for trigger: $trigger" SUBSCRIPTION_ID=$(gcloud eventarc triggers describe "$trigger" --location $LOCATION --format json | jq -r '.transport.pubsub.subscription') if [ -z "$SUBSCRIPTION_ID" ]; then echo "Error: Could not retrieve subscription ID for trigger: $trigger" continue # Skip to the next trigger fi gcloud pubsub subscriptions update "$SUBSCRIPTION_ID" --ack-deadline=600 echo "Ack deadline updated for subscription: $SUBSCRIPTION_ID" done
Melihat ID dan sumber CloudEvent
Untuk melihat ID dan sumber CloudEvent yang memicu layanan Anda, lihat resource berikut di log layanan Cloud Run:
LogEntry.labels.run.googleapis.com/cloud_event_idLogEntry.labels.run.googleapis.com/cloud_event_source
Langkah berikutnya
- Penyedia dan tujuan peristiwa
- Jenis peristiwa Google yang didukung oleh Eventarc
- Coba ulang acara di Eventarc
- Harga Eventarc