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.
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.
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/
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
Men-deploy image container ke Cloud Run
gcloud run deploy ${SERVICE_NAME} \ --image $REGION-docker.pkg.dev/${PROJECT_ID}/REPOSITORY/${SERVICE_NAME}:v1
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.
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.
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.
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.
Untuk melihat entri log:
Filter entri log dan tampilkan output dalam format JSON:
gcloud logging read "resource.labels.service_name=helloworld-events AND textPayload:random.txt" --format=json
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.