Membuat pemicu dari peristiwa Pub/Sub

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

  1. Pastikan Anda telah menyiapkan project baru untuk Cloud Run seperti yang dijelaskan di halaman setup.

  2. Aktifkan Artifact Registry, Cloud Build, Cloud Run Admin API, Cloud Logging, dan Pub/Sub API:

    Aktifkan API

    Jika Anda mengonfigurasi pemicu berbasis Eventarc, Anda juga harus mengaktifkan Eventarc API:

    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:

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

  1. Di konsol Google Cloud , buka halaman Services Cloud Run:

    Buka Cloud Run

  2. Klik layanan atau fungsi yang ingin Anda buat pemicu Pub/Sub-nya.

  3. Pilih tab Pemicu.

    Pilih tab untuk konfigurasi pemicu yang Anda pilih:

    1. Klik Add trigger, lalu pilih Pub/Sub trigger > Direct.
    2. 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.
    3. Klik Simpan.

    Eventarc

    Di panel Eventarc trigger, ubah detail pemicu sebagai berikut:

    1. Masukkan nama untuk pemicu di kolom Trigger name, atau gunakan nama default.

    2. 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.

    3. 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.

    4. 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.

    5. 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.

    6. 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.

    7. 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.

    8. 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, dan route/subroute.

    9. 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.

    10. Setelah Anda melengkapi kolom yang wajib diisi, klik Simpan pemicu.

gcloud

Untuk membuat pemicu bagi layanan atau fungsi Anda menggunakan gcloud CLI:

  1. Deploy layanan atau fungsi Anda jika Anda belum melakukannya.

  2. Jika Anda sudah memiliki topik Pub/Sub, lewati langkah ini. Jika tidak, buat topik Pub/Sub:

    gcloud pubsub topics create TOPIC_NAME
  3. Pilih tab untuk konfigurasi pemicu yang Anda pilih:

    Langsung

    1. 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.

      1. 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_NAME dengan nama unik untuk akun layanan Anda.

      2. 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 403 dalam log layanan.

      3. 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.

    2. 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-account mengaktifkan 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 properti eventarc/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 adalah 1. 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