Menggunakan Eventarc untuk menerima peristiwa dari Cloud Storage

Tutorial ini menunjukkan cara men-deploy aplikasi dalam container menggunakan layanan Cloud Run terautentikasi yang menerima peristiwa melalui Eventarc.

Dengan menentukan filter untuk pemicu Eventarc, Anda dapat mengonfigurasi pemilihan rute peristiwa, termasuk sumber peristiwa dan target peristiwa. Dalam hal ini, update pada bucket Cloud Storage akan memicu peristiwa tersebut dan permintaan akan dikirim ke layanan Cloud Run Anda dalam bentuk permintaan HTTP.

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.

Membuat bucket Cloud Storage

Membuat bucket Cloud Storage untuk digunakan sebagai sumber peristiwa:

gcloud storage buckets create gs://PROJECT_ID-bucket/ --location=us-central1

Setelah sumber peristiwa dibuat, Anda dapat men-deploy layanan penerima peristiwa di Cloud Run.

Men-deploy penerima peristiwa ke Cloud Run

Men-deploy layanan Cloud Run yang menerima dan mencatat 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.

    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/audit-storage/

    Python

    cd python-docs-samples/eventarc/audit-storage/

    Go

    cd golang-samples/eventarc/audit_storage/

    Java

    cd java-docs-samples/eventarc/audit-storage/

    C#

    cd dotnet-docs-samples/eventarc/audit-storage/
  3. Build container untuk layanan Cloud Run:

    export PROJECT_ID=$(gcloud config get-value project)
    export SERVICE_NAME=helloworld-events
    gcloud builds submit --tag $REGION-docker.pkg.dev/${PROJECT_ID}/REPOSITORY/${SERVICE_NAME}:v1
  4. Men-deploy image container ke Cloud Run

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

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

Membuat pemicu Eventarc

Pemicu Eventarc mengirimkan peristiwa dari bucket Cloud Storage ke helloworld-events di layanan Cloud Run. Layanan memerlukan autentikasi, dan peristiwa harus dipicu oleh pemanggil yang memiliki akun layanan dengan peran dan izin IAM yang diperlukan untuk menggunakan resource.

  1. Buat pemicu yang memfilter peristiwa Cloud Storage:

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

    Tindakan ini akan membuat pemicu yang disebut helloworld-events.

    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}

    Output-nya akan mirip dengan berikut ini:

    NAME: helloworld-events
    TYPE: google.cloud.storage.object.v1.finalized
    DESTINATION: Cloud Run service: helloworld-events
    ACTIVE: Yes
    

Membuat dan melihat peristiwa

Upload file teks ke bucket Cloud Storage untuk membuat peristiwa yang dirutekan ke layanan Cloud Run. Layanan Cloud Run mencatat peristiwa ke dalam log layanan.

  1. Untuk membuat peristiwa:

    Upload file teks ke Cloud Storage:

     echo "Hello World" > random.txt
     gcloud storage cp random.txt gs://PROJECT_ID-bucket/random.txt
    

    Hasil upload ini akan membuat peristiwa dan layanan Cloud Run akan mencatat pesan peristiwa tersebut ke dalam log.

  2. Untuk melihat entri log:

    1. Filter entri log dan tampilkan output dalam format JSON:

      gcloud logging read "resource.labels.service_name=helloworld-events AND textPayload:random.txt" --format=json
      
    2. Cari entri log yang mirip dengan:

      "textPayload": "Detected change in Cloud Storage bucket: objects/random.txt"
      

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