Menerima peristiwa Pub/Sub menggunakan layanan Cloud Run yang diautentikasi

Tutorial ini menunjukkan cara men-deploy aplikasi dalam container menggunakan layanan Cloud Run terautentikasi yang menerima peristiwa menggunakan Pub/Sub. Pub/Sub adalah layanan pesan real-time terkelola sepenuhnya yang memungkinkan Anda mengirim dan menerima pesan antar-aplikasi independen.

Membuat repositori standar Artifact Registry

Buat repositori standar Artifact Registry untuk menyimpan image container Anda:

gcloud artifacts repositories create REPOSITORY \
    --repository-format=docker \
    --location=$REGION

Ganti REPOSITORY dengan nama unik untuk repositori.

Men-deploy penerima peristiwa ke Cloud Run

Deploy layanan Cloud Run yang mencatat konten peristiwa ke dalam log.

  1. Buat clone repositori GitHub:

    Node.js

    git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git

    Atau, Anda dapat mendownload contoh dalam file ZIP dan mengekstraknya.

    Python

    git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git

    Atau, Anda dapat mendownload contoh dalam file ZIP dan mengekstraknya.

    Go

    git clone https://github.com/GoogleCloudPlatform/golang-samples.git

    Atau, Anda dapat mendownload contoh dalam file ZIP dan mengekstraknya.

    Java

    git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git

    Atau, Anda dapat mendownload contoh sebagai file ZIP dan mengekstraknya.

    Ruby

    git clone https://github.com/GoogleCloudPlatform/ruby-docs-samples.git

    Atau, Anda dapat mendownload contoh sebagai file ZIP dan mengekstraknya.

    C#

    git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git

    Atau, Anda dapat mendownload contoh sebagai file ZIP dan mengekstraknya.

  2. Ubah ke direktori yang berisi kode contoh Cloud Run:

    Node.js

    cd nodejs-docs-samples/eventarc/pubsub/

    Python

    cd python-docs-samples/eventarc/pubsub/

    Go

    cd golang-samples/eventarc/pubsub/

    Java

    cd java-docs-samples/eventarc/pubsub/

    Ruby

    cd ruby-docs-samples/eventarc/pubsub/

    C#

    cd dotnet-docs-samples/eventarc/pubsub/
  3. Build container dan upload ke Cloud Build:

    gcloud builds submit --tag $REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/trigger-pubsub:v1
  4. Men-deploy image container ke Cloud Run

    gcloud run deploy ${SERVICE_NAME} \
        --image $REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/trigger-pubsub:v1
  5. Pada perintah Allow unauthenticated invocations to trigger-pubsub (y/N)?, respons n dengan "No".

Jika Anda melihat URL layanan Cloud Run, berarti deployment telah selesai.

Membuat pemicu Eventarc

Saat pesan dipublikasikan ke topik Pub/Sub, peristiwa memicu layanan Cloud Run.

  1. Buat pemicu untuk memproses pesan Pub/Sub:

    Topik pub/sub baru

      gcloud eventarc triggers create ${SERVICE_NAME} \
          --destination-run-service=${SERVICE_NAME} \
          --destination-run-region=${REGION} \
          --location=${REGION} \
          --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
          --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.com
    

    Tindakan ini akan membuat topik Pub/Sub baru dan pemicu untuk topik tersebut yang disebut trigger-pubsub.

    Topik Pub/Sub yang ada

      gcloud eventarc triggers create ${SERVICE_NAME} \
          --destination-run-service=${SERVICE_NAME} \
          --destination-run-region=${REGION} \
          --location=${REGION} \
          --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
          --transport-topic=projects/PROJECT_ID/topics/TOPIC_ID \
          --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.com
    

    Ganti kode berikut:

    • PROJECT_ID: Google Cloud project ID Anda
    • TOPIC_ID: ID topik Pub/Sub yang ada

    Tindakan ini akan membuat pemicu yang disebut trigger-pubsub untuk topik Pub/Sub yang ada.

    Perhatikan bahwa saat membuat pemicu Eventarc untuk pertama kalinya dalam project Google Cloud , mungkin akan ada penundaan dalam penyediaan agen layanan Eventarc. Masalah ini biasanya dapat diatasi dengan mencoba membuat ulang pemicu. Untuk mengetahui informasi selengkapnya, lihat Error izin ditolak.

  2. Konfirmasi bahwa pemicu telah berhasil dibuat. Perhatikan bahwa meskipun pemicu Anda langsung dibuat, diperlukan waktu hingga dua menit agar pemicu berfungsi sepenuhnya.

    gcloud eventarc triggers list --location=${REGION}

    Status pemicu yang ditampilkan harus ACTIVE: Yes.

Membuat dan melihat peristiwa

Publikasikan pesan ke topik Pub/Sub untuk membuat peristiwa dan memicu layanan Cloud Run. Layanan Cloud Run mencatat pesan di log layanan.

  1. Cari dan tetapkan topik Pub/Sub sebagai variabel lingkungan:

    export TOPIC_ID=$(gcloud eventarc triggers describe ${SERVICE_NAME} \
        --format='value(transport.pubsub.topic)')
  2. Kirim pesan ke topik Pub/Sub untuk membuat peristiwa:

    gcloud pubsub topics publish $TOPIC_ID --message "Hello there"

    Peristiwa dikirim ke layanan Cloud Run, yang mencatat pesan peristiwa.

  3. Lihat entri log terkait peristiwa yang dibuat oleh layanan Anda:

    gcloud logging read 'textPayload: "Hello there!"'

    Entri log akan terlihat seperti berikut:

    textPayload: 'Hello, Hello there!'

Log mungkin memerlukan waktu beberapa saat untuk ditampilkan. Jika Anda tidak melihatnya, periksa lagi setelah satu menit.