Anda dapat memanggil layanan dan fungsi Cloud Run dengan menyiapkan pemicu Pub/Sub.
Saat mengonfigurasi pemicu, Anda menautkan pemicu ke topik Pub/Sub tertentu. Hal ini memastikan layanan atau fungsi Anda dipanggil secara otomatis setiap kali pesan dipublikasikan ke topik tersebut.
Anda dapat mengonfigurasi pemicu ini dengan dua cara:
- Pemicu Pub/Sub langsung (Direkomendasikan): Rutekan pesan langsung ke layanan atau fungsi Anda menggunakan Pub/Sub. Anda mengelola langganan secara langsung, dan layanan atau fungsi Anda menerima permintaan push Pub/Sub standar. Gunakan ini jika Anda memerlukan konfigurasi yang lebih sederhana dan latensi yang lebih rendah.
- Pemicu berbasis Eventarc: Rutekan pesan Pub/Sub ke layanan atau fungsi Anda menggunakan Eventarc. Anda mengelola pemicu Pub/Sub dengan cara yang sama seperti sumber Eventarc lainnya, dan layanan atau fungsi Anda menerima peristiwa sebagai CloudEvents. Gunakan ini jika Anda memerlukan fitur pemfilteran atau perutean lanjutan Eventarc.
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, Cloud Logging, dan Pub/Sub API:
Jika Anda mengonfigurasi pemicu berbasis Eventarc, Anda juga harus mengaktifkan Eventarc API:
Peran yang diperlukan
Berikan peran dan izin IAM yang diperlukan. Jika Anda mengonfigurasi pemicu berbasis Eventarc, lihat peran dan izin IAM yang diperlukan untuk Eventarc.
Peran yang diperlukan untuk akun deployer
Untuk mendapatkan izin yang Anda perlukan untuk memicu dari peristiwa Pub/Sub, minta administrator untuk memberi Anda peran IAM berikut pada project Anda:
- Cloud Run Admin (
roles/run.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.
Membuat pemicu Pub/Sub
Konsol
Di konsol Google Cloud , buka halaman Services Cloud Run:
Klik layanan atau fungsi yang ingin Anda buat pemicu Pub/Sub-nya.
Pilih tab Pemicu.
Pilih tab untuk konfigurasi pemicu yang Anda pilih:
Langsung (direkomendasikan)
- Klik Add trigger, lalu pilih Pub/Sub trigger > Direct.
- Di panel Direct Pub/Sub subscription:
- Di kolom Cloud Pub/Sub topic, pilih topik jika Anda sudah membuatnya, atau klik Create new topic untuk membuat topik baru.
- Di kolom Service account, pilih akun layanan yang digunakan langganan untuk memanggil layanan Anda. Jika konsol mencantumkan peran yang tidak ada, klik Grant all.
- Untuk Service URL path, masukkan jalur di layanan Anda
yang akan menerima pesan, seperti
/(default) atau/pubsub. Konsol akan menambahkan jalur ini ke URL layanan Anda.
- Klik Simpan.
Eventarc
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 informasi selengkapnya, lihat Peristiwa pihak ketiga di Eventarc.
Pilih Pub/Sub 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 google.cloud.pubsub.topic.v1.messagePublished dari daftar Event type. Konfigurasi pemicu Anda bervariasi, bergantung pada jenis peristiwa yang didukung. Untuk mengetahui informasi selengkapnya, lihat Jenis peristiwa.
Dari daftar Select a Cloud Pub/Sub topic, pilih topik untuk dipantau oleh pemicu. Pesan yang Anda publikasikan ke topik ini akan memicu panggilan ke fungsi Anda.
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.
Secara opsional, tentukan Jalur URL Layanan untuk mengirim permintaan masuk. Ini adalah jalur relatif pada layanan tujuan yang akan menerima peristiwa untuk pemicu. 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.
gcloud
Untuk membuat pemicu bagi layanan atau fungsi Anda menggunakan gcloud CLI:
Deploy layanan atau fungsi Anda jika Anda belum melakukannya.
Jika Anda sudah memiliki topik Pub/Sub, lewati langkah ini. Jika tidak, buat topik Pub/Sub:
gcloud pubsub topics create TOPIC_NAME
Pilih tab untuk konfigurasi pemicu yang Anda pilih:
Langsung
Konfigurasikan peran yang diperlukan untuk agen layanan Pub/Sub:
Peran yang diperlukan untuk agen layanan Pub/Sub
Langkah-langkah berikut menjelaskan cara membuat dan menggunakan akun layanan yang dapat digunakan oleh langganan Pub/Sub untuk memanggil layanan atau fungsi Anda. Langkah-langkah ini diperlukan saat menggunakan Google Cloud CLI untuk membuat perintah pemicu Pub/Sub. Jika Anda menggunakan konsol Google Cloud untuk membuat pemicu, Anda dapat melewati langkah-langkah ini.
-
Buat atau pilih akun layanan untuk merepresentasikan identitas langganan Pub/Sub.
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME \ --display-name "Cloud Run Pub/Sub Invoker"
Ganti
SERVICE_ACCOUNT_NAMEdengan nama unik untuk akun layanan Anda. -
Berikan izin pada akun layanan invoker untuk memanggil layanan Anda:
gcloud run services add-iam-policy-binding SERVICE_NAME \ --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID. \ --role=roles/run.invoker
Mungkin diperlukan waktu beberapa menit sampai perubahan IAM diterapkan. Sementara itu, Anda mungkin melihat error
HTTP 403dalam log layanan. -
Izinkan Pub/Sub untuk membuat token autentikasi di project Anda:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-pubsub. \ --role=roles/iam.serviceAccountTokenCreator
Ganti kode berikut:
PROJECT_ID: Project ID Google Cloud Anda.PROJECT_NUMBER: nomor project Google Cloud Anda.
Project ID dan nomor project tercantum di panel Project info di Google Cloud konsol untuk project Anda.
-
Buat langganan Pub/Sub dengan akun layanan:
gcloud pubsub subscriptions create SUBSCRIPTION_NAME \ --topic TOPIC_NAME \ --ack-deadline=600 \ --push-endpoint=SERVICE_URL/ \ --push-auth-service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.
Ganti kode berikut:
SUBSCRIPTION_NAME: nama langganan yang ingin Anda buat.TOPIC_NAME: nama topik yang Anda buat sebelumnya.SERVICE_URL: URL HTTPS yang disediakan saat men-deploy layanan. URL ini berfungsi meskipun Anda juga telah menambahkan pemetaan domain.SERVICE_ACCOUNT_NAME: nama akun layanan yang Anda buat sebelumnya.PROJECT_ID: project ID Google Cloud Anda.
Catatan:
Flag
--push-auth-service-accountmengaktifkan fungsi push Pub/Sub untuk Autentikasi dan otorisasi.Domain layanan Cloud Run Anda secara otomatis didaftarkan untuk digunakan dengan langganan Pub/Sub.
Khusus Cloud Run, ada pemeriksaan autentikasi bawaan bahwa token valid dan otorisasi memeriksa bahwa akun layanan memiliki izin untuk memanggil layanan Cloud Run.
Eventarc
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=google.cloud.pubsub.topic.v1.messagePublished" \ --transport-topic=projects/PROJECT_ID/topics/TOPIC_NAME \ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.
Ganti 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.
DESTINATION_RUN_SERVICE: nama layanan yang di-deploy atau fungsi Cloud Run yang menerima peristiwa untuk pemicu.DESTINATION_RUN_REGION: (opsional) Cloud Run location tempat fungsi Cloud Run tujuan dapat ditemukan. Jika tidak ditentukan, fungsi diasumsikan berada di region yang sama dengan pemicu.- Flag
--event-filters="type=google.cloud.pubsub.topic.v1.messagePublished"wajib diisi dan tidak dapat diubah. Untuk jenis peristiwa yang berbeda, Anda harus membuat pemicu baru. TOPIC_NAME: ID topik Pub/Sub yang ada. Topik harus berada dalam project yang sama dengan pemicu.SERVICE_ACCOUNT_NAME: nama akun layanan terkelola pengguna Anda.PROJECT_ID: Project ID Google Cloud Anda.
Catatan:
- 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.
Langkah berikutnya
- Pelajari cara memicu layanan dari Pub/Sub.
- Pelajari cara mengonfigurasi percobaan ulang.
- Pelajari cara memicu dengan peristiwa.