Halaman ini menunjukkan cara membuat pemicu Eventarc sehingga layanan Cloud Run dapat menerima peristiwa dari layanan Google Cloud lain.
Eventarc adalah layanan Google Cloud 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 target Cloud Run. Jika peristiwa atau serangkaian peristiwa yang ditentukan cocok dengan filter, layanan Cloud Run Anda akan dipanggil secara otomatis sebagai respons terhadap peristiwa tersebut. Layanan yang menggunakan pemicu Eventarc disebut layanan berbasis peristiwa. Peristiwa yang dikirim ke layanan Cloud Run Anda diterima dalam bentuk permintaan HTTP.
Jenis peristiwa berikut memicu permintaan ke layanan Anda:
- Log audit dibuat yang cocok dengan kriteria filter pemicu
- Peristiwa langsung seperti update pada bucket Cloud Storage
- Pesan langsung yang dipublikasikan ke topik Pub/Sub
Anda juga dapat membuat pemicu Eventarc menggunakan Google Cloud CLI atau melalui halaman konsol Eventarc. Untuk petunjuk tentang cara membuat pemicu untuk penyedia, jenis peristiwa, dan tujuan tertentu, filter daftar untuk mempelajari lebih lanjut Penyedia dan tujuan peristiwa Eventarc.
Lokasi pemicu
Saat membuat pemicu Eventarc, Anda menentukan lokasi untuk pemicu tersebut. Lokasi ini harus cocok dengan lokasi resource Google Cloud yang ingin Anda pantau peristiwanya. Dalam sebagian besar skenario, Anda juga harus men-deploy layanan Cloud Run berbasis peristiwa di region yang sama. Untuk mengetahui informasi selengkapnya, lihat artikel Memahami lokasi Eventarc.
Identitas pemicu
Akun layanan pemicu Eventarc harus memiliki izin untuk memanggil layanan Anda. Anda mungkin perlu memverifikasi bahwa akun layanan default Compute Engine memiliki izin yang benar untuk memanggil layanan Anda. Untuk mengetahui informasi selengkapnya, lihat Peran yang diperlukan.
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, dan Eventarc API:
Peran yang diperlukan
Anda atau administrator Anda harus memberikan peran IAM berikut kepada akun deployer, identitas pemicu, dan secara opsional, agen layanan Pub/Sub.
Peran yang diperlukan untuk akun deployer
Untuk mendapatkan izin yang diperlukan untuk mengonfigurasi pemicu Eventarc, 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
) -
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 cara memberikan 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.
Peran yang diperlukan untuk identitas pemicu
Catat akun layanan default Compute Engine karena Anda akan melampirkannya ke pemicu Eventarc untuk merepresentasikan identitas pemicu untuk tujuan pengujian. Akun layanan ini dibuat secara otomatis setelah mengaktifkan atau menggunakan layanan Google Cloud yang menggunakan Compute Engine, dan dengan format email berikut:
PROJECT_NUMBER-compute@developer.gserviceaccount.com
Ganti
PROJECT_NUMBER
dengan Google Cloud nomor project Anda. Anda dapat menemukan nomor project di halaman Selamat Datang di konsol Google Cloud atau dengan menjalankan perintah berikut:gcloud projects describe PROJECT_ID --format='value(projectNumber)'
Untuk lingkungan produksi, sebaiknya buat akun layanan baru dan berikan satu atau beberapa peran IAM yang berisi izin minimum yang diperlukan dan ikuti prinsip hak istimewa terendah.
- Secara default, layanan Cloud Run hanya dapat dipanggil oleh
Project Owner, Project Editor, Cloud Run Admin dan Invoker.
Anda dapat
mengontrol
akses per layanan; namun, untuk tujuan pengujian, berikan
peran Cloud Run
Invoker (
run.invoker
) di project Google Cloud ke akun layanan Compute Engine. Peran ini akan memberikan peran tersebut di semua layanan dan tugas Cloud Run dalam suatu project.gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/run.invoker
Perhatikan bahwa pemicu akan berhasil dibuat dan diaktifkan jika Anda membuat pemicu untuk layanan Cloud Run yang diautentikasi tanpa memberikan peran Cloud Run Namun, pemicu tidak akan berfungsi seperti yang diharapkan dan pesan yang mirip dengan berikut ini akan muncul di log:
The request was not authenticated. Either allow unauthenticated invocations or set the proper Authorization header.
- Berikan
Peran
Eventarc Event Receiver (
roles/eventarc.eventReceiver
) pada project ke akun layanan default Compute Engine agar pemicu Eventarc dapat menerima peristiwa dari penyedia peristiwa.gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/eventarc.eventReceiver
Peran opsional untuk agen layanan Pub/Sub
- Jika Anda mengaktifkan agen layanan Cloud Pub/Sub pada atau sebelum
8 April 2021, untuk mendukung permintaan push Pub/Sub yang diautentikasi, berikan
peran
Service Account Token Creator (
roles/iam.serviceAccountTokenCreator
) kepada agen layanan. Jika tidak, peran ini akan diberikan secara default:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountTokenCreator
Membuat pemicu untuk layanan
Anda dapat menentukan pemicu setelah men-deploy layanan.
Klik tab untuk mendapatkan petunjuk cara menggunakan alat pilihan Anda.
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 Service details, buka tab Triggers.
Klik Tambahkan pemicu, lalu pilih salah satu opsi.
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 penyedia peristiwa dari daftar Event provider, untuk memilih produk yang menyediakan jenis peristiwa untuk memicu layanan Anda. Untuk 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 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.
Jika perlu, tentukan Jalur URL layanan untuk mengirim permintaan masuk ke. Ini adalah jalur relatif pada layanan tujuan yang akan menjadi tempat pengiriman peristiwa untuk pemicu. Misalnya:
/
,/route
,route
, danroute/subroute
.Setelah Anda mengisi 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 peristiwa:
gcloud eventarc triggers create TRIGGER_NAME \ --location=REGION \ --destination-run-service=SERVICE \ --destination-run-region=REGION \ --event-filters="EVENT_FILTER" \ --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.com
Ganti:
TRIGGER_NAME dengan nama 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 layanan di region yang sama. Untuk mengetahui informasi selengkapnya, lihat Lokasi Eventarc.
SERVICE dengan nama layanan yang Anda deploy.
REGION dengan region Cloud Run layanan.
PROJECT_NUMBER dengan Google Cloud nomor project Anda. 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 komputasi default.
Flag
event-filters
menentukan filter peristiwa yang dipantau pemicu. Peristiwa yang cocok dengan semuaevent-filters
, filter memicu panggilan ke layanan Anda. Setiap pemicu harus memiliki jenis peristiwa yang didukung. Anda tidak dapat mengubah jenis filter peristiwa setelah dibuat. 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 lebih banyak filter.
Terraform
Untuk membuat pemicu Eventarc untuk layanan Cloud Run, lihat Membuat pemicu menggunakan Terraform.
Membuat pemicu untuk fungsi
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 bagi fungsi Anda:
Di konsol Google Cloud , buka Cloud Run:
Klik Write a function, lalu masukkan detail fungsi. Untuk mengetahui informasi selengkapnya tentang cara mengonfigurasi fungsi selama deployment, lihat Men-deploy fungsi.
Di bagian Pemicu, klik Tambahkan pemicu.
Pilih salah satu opsi.
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 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 fungsi Anda. Untuk 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 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. 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 ke. Ini adalah jalur relatif pada layanan tujuan yang akan menjadi tempat pengiriman peristiwa untuk pemicu. Misalnya:
/
,/route
,route
, danroute/subroute
.
Setelah Anda mengisi kolom yang wajib diisi, klik Simpan pemicu.
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 REGION
Ganti:
FUNCTION dengan nama fungsi yang Anda deploy. Anda dapat menghilangkan parameter ini sepenuhnya, tetapi Anda akan diminta untuk memasukkan nama jika menghilangkannya.
FUNCTION_ENTRYPOINT dengan titik entri ke fungsi Anda dalam kode sumber. Ini adalah kode yang dieksekusi 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 Google Cloud region tempat Anda ingin men-deploy fungsi Anda. Contohnya,
us-central1
Jalankan perintah berikut untuk membuat pemicu yang memfilter peristiwa:
gcloud eventarc triggers create TRIGGER_NAME \ --location=REGION \ --destination-run-service=FUNCTION \ --destination-run-region=REGION \ --event-filters="EVENT_FILTER" \ --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.com
Ganti:
TRIGGER_NAME dengan nama 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 mengetahui informasi selengkapnya, lihat Lokasi Eventarc.
FUNCTION dengan nama fungsi yang Anda deploy.
REGION dengan region Cloud Run fungsi.
PROJECT_NUMBER dengan Google Cloud nomor project Anda. 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 komputasi default.
Flag
event-filters
menentukan filter peristiwa yang dipantau pemicu. Peristiwa yang cocok dengan semuaevent-filters
, filter memicu panggilan ke fungsi Anda. Setiap pemicu harus memiliki jenis peristiwa yang didukung. Anda tidak dapat mengubah jenis filter peristiwa setelah dibuat. 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 lebih banyak filter.
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.
Sebaiknya tetapkan 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 link 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
REGION
) 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 $REGION --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 Service and Cloud Run function 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 $REGION --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_id
LogEntry.labels.run.googleapis.com/cloud_event_source
Langkah berikutnya
- Pelajari Eventarc lebih lanjut
- Memahami komponen Eventarc yang dapat ditagih
- Membuat pemicu untuk fungsi yang di-deploy di Cloud Run
- Jenis peristiwa Google yang didukung oleh Eventarc.
- Mengaktifkan percobaan ulang peristiwa di Eventarc