1. Pengantar

Cloud Run memungkinkan Anda menjalankan container stateless di lingkungan yang terkelola sepenuhnya. Dibuat dari Knative open source, Anda dapat memilih untuk menjalankan container secara terkelola sepenuhnya dengan Cloud Run, atau di cluster Google Kubernetes Engine dengan Cloud Run for Anthos.

Eventarc memudahkan Anda menghubungkan berbagai layanan (Cloud Run, Cloud Functions, Workflows) dengan peristiwa dari berbagai sumber. Layanan ini memungkinkan Anda membangun arsitektur berbasis peristiwa yang microservicenya dikaitkan secara longgar dan didistribusikan. Layanan ini juga menangani penyerapan, pengiriman, keamanan, otorisasi, dan penanganan error untuk Anda, sehingga meningkatkan ketangkasan developer dan ketahanan aplikasi.
Dalam codelab ini, Anda akan mempelajari Eventarc. Lebih khusus lagi, Anda akan memantau peristiwa dari Pub/Sub, Cloud Storage, dan Cloud Audit Logs dengan Eventarc, lalu meneruskannya ke layanan Cloud Run.
Yang akan Anda pelajari
- Visi Eventarc
- Menemukan peristiwa di Eventarc
- Membuat sink Cloud Run
- Membuat pemicu untuk Pub/Sub
- Membuat pemicu untuk Cloud Storage
- Membuat pemicu untuk Cloud Audit Logs
- Menjelajahi UI Eventarc
2. Visi Eventarc
Eventarc bertujuan untuk mengirimkan peristiwa dari berbagai sumber peristiwa Google, Google Cloud, dan pihak ketiga ke tujuan peristiwa Google Cloud.

Sumber Google Cloud | Sumber peristiwa yang merupakan produk milik Google Cloud |
Sumber Google | Sumber peristiwa yang merupakan produk milik Google seperti Gmail, Hangouts, Pengelolaan Android, dan lainnya |
Sumber kustom | Sumber peristiwa yang bukan produk milik Google dan dibuat oleh pengguna akhir itu sendiri |
Sumber pihak ketiga | Sumber peristiwa yang bukan milik Google maupun diproduksi pelanggan. Hal ini mencakup sumber peristiwa populer seperti Check Point CloudGuard, Datadog, ForgeRock, Lacework, dll. yang dimiliki dan dikelola oleh partner dan penyedia pihak ketiga. |
Peristiwa dinormalisasi ke format CloudEvents v1.0 untuk interoperabilitas lintas layanan. CloudEvents adalah spesifikasi terbuka yang netral terhadap vendor yang mendeskripsikan data peristiwa dalam format umum, sehingga memungkinkan interoperabilitas di seluruh layanan, platform, dan sistem.
3. Penyiapan dan Persyaratan
Penyiapan lingkungan mandiri
- Login ke Google Cloud Console dan buat project baru atau gunakan kembali project yang sudah ada. Jika belum memiliki akun Gmail atau Google Workspace, Anda harus membuatnya.



- Nama project adalah nama tampilan untuk peserta project ini. String ini adalah string karakter yang tidak digunakan oleh Google API, dan Anda dapat memperbaruinya kapan saja.
- Project ID harus unik di semua project Google Cloud dan tidak dapat diubah (tidak dapat diubah setelah ditetapkan). Cloud Console otomatis menghasilkan string unik; biasanya Anda tidak peduli dengan kata-katanya. Pada sebagian besar codelab, Anda harus mereferensikan Project ID (dan biasanya diidentifikasi sebagai
PROJECT_ID). Jadi, jika Anda tidak menyukainya, buat ID acak lain, atau, Anda dapat mencoba sendiri dan melihat apakah tersedia. Kemudian file akan "dibekukan" setelah project dibuat. - Ada nilai ketiga, Nomor Project yang digunakan oleh beberapa API. Pelajari lebih lanjut ketiga nilai ini di dokumentasi.
- Selanjutnya, Anda harus mengaktifkan penagihan di Cloud Console untuk menggunakan API/resource Cloud. Menjalankan operasi dalam codelab ini seharusnya tidak memerlukan banyak biaya, bahkan mungkin tidak sama sekali. Untuk menonaktifkan resource agar tidak menimbulkan penagihan di luar tutorial ini, ikuti petunjuk "pembersihan" yang ada di akhir codelab. Pengguna baru Google Cloud memenuhi syarat untuk mengikuti program Uji Coba Gratis senilai $300 USD.
Mulai Cloud Shell
Meskipun Google Cloud dapat dioperasikan dari jarak jauh menggunakan laptop Anda, dalam codelab ini, Anda akan menggunakan Google Cloud Shell, lingkungan command line yang berjalan di Cloud.
Dari Konsol GCP, klik ikon Cloud Shell di toolbar kanan atas:

Hanya perlu waktu beberapa saat untuk penyediaan dan terhubung ke lingkungan. Jika sudah selesai, Anda akan melihat tampilan seperti ini:

Mesin virtual ini berisi semua alat pengembangan yang Anda perlukan. Layanan ini menawarkan direktori beranda tetap sebesar 5 GB dan beroperasi di Google Cloud, sehingga sangat meningkatkan performa dan autentikasi jaringan. Semua pekerjaan Anda di lab ini dapat dilakukan hanya dengan browser.
Sebelum memulai
Di dalam Cloud Shell, pastikan project ID Anda sudah disiapkan:
PROJECT_ID=your-project-id gcloud config set project $PROJECT_ID
4. Men-deploy layanan Cloud Run
Men-deploy layanan Cloud Run untuk menerima peristiwa. Anda akan men-deploy container Hello Cloud Run yang mencatat konten CloudEvents.
Pertama, aktifkan layanan yang diperlukan untuk Cloud Run:
gcloud services enable run.googleapis.com
Deploy container hello ke Cloud Run:
REGION=us-central1 SERVICE_NAME=hello gcloud run deploy $SERVICE_NAME \ --allow-unauthenticated \ --image=gcr.io/cloudrun/hello \ --region=$REGION
Jika berhasil, command line akan menampilkan URL layanan. Anda dapat membuka URL layanan di jendela browser mana pun untuk memeriksa kembali bahwa layanan kini telah di-deploy.
5. Penemuan Acara
Sebelum membuat pemicu di Eventarc, Anda dapat menemukan sumber peristiwa, jenis peristiwa yang dapat dipancarkan, dan cara mengonfigurasi pemicu untuk menggunakannya.
Untuk melihat daftar berbagai jenis peristiwa:
gcloud beta eventarc attributes types list NAME DESCRIPTION google.cloud.audit.log.v1.written Cloud Audit Log written google.cloud.pubsub.topic.v1.messagePublished Cloud Pub/Sub message published google.cloud.storage.object.v1.archived Cloud Storage: Sent when a live version of an (object versioned) object is archived or deleted. google.cloud.storage.object.v1.deleted Cloud Storage: Sent when an object has been permanently deleted. google.cloud.storage.object.v1.finalized Cloud Storage: Sent when a new object (or a new generation of an existing object). google.cloud.storage.object.v1.metadataUpdated Cloud Storage: Sent when the metadata of an existing object changes.
Untuk mendapatkan informasi selengkapnya tentang setiap jenis peristiwa:
gcloud beta eventarc attributes types describe google.cloud.audit.log.v1.written attributes: type,serviceName,methodName,resourceName description: 'Cloud Audit Log: Sent when a log is written.' name: google.cloud.audit.log.v1.written
Untuk melihat daftar layanan yang memancarkan jenis peristiwa tertentu:
gcloud beta eventarc attributes service-names list --type=google.cloud.audit.log.v1.written SERVICE_NAME DISPLAY_NAME accessapproval.googleapis.com Access Approval accesscontextmanager.googleapis.com Access Context Manager admin.googleapis.com Google Workspace Admin aiplatform.googleapis.com AI Platform (under Vertex AI) apigee.googleapis.com Apigee apigeeconnect.googleapis.com Apigee Connect ... workflows.googleapis.com Workflows
Untuk melihat daftar nama metode (sub-peristiwa) yang dapat dipancarkan oleh setiap layanan:
gcloud beta eventarc attributes method-names list --type=google.cloud.audit.log.v1.written --service-name=workflows.googleapis.com METHOD_NAME google.cloud.workflows.v1.Workflows.CreateWorkflow google.cloud.workflows.v1.Workflows.DeleteWorkflow google.cloud.workflows.v1.Workflows.GetWorkflow google.cloud.workflows.v1.Workflows.ListWorkflows google.cloud.workflows.v1.Workflows.UpdateWorkflow google.cloud.workflows.v1beta.Workflows.CreateWorkflow google.cloud.workflows.v1beta.Workflows.DeleteWorkflow google.cloud.workflows.v1beta.Workflows.GetWorkflow google.cloud.workflows.v1beta.Workflows.ListWorkflows google.cloud.workflows.v1beta.Workflows.UpdateWorkflow
6. Membuat pemicu Pub/Sub
Salah satu cara untuk menerima peristiwa adalah melalui Cloud Pub/Sub. Aplikasi apa pun dapat memublikasikan pesan ke Pub/Sub dan pesan ini dapat dikirimkan ke Cloud Run melalui Eventarc.
Penyiapan
Sebelum membuat pemicu, aktifkan layanan yang diperlukan untuk Eventarc:
gcloud services enable eventarc.googleapis.com
Anda juga memerlukan akun layanan yang akan digunakan oleh pemicu. Membuat akun layanan:
SERVICE_ACCOUNT=eventarc-trigger-sa gcloud iam service-accounts create $SERVICE_ACCOUNT
Buat
Buat pemicu untuk memfilter peristiwa yang dipublikasikan ke topik Pub/Sub ke layanan Cloud Run yang di-deploy:
TRIGGER_NAME=trigger-pubsub gcloud eventarc triggers create $TRIGGER_NAME \ --destination-run-service=$SERVICE_NAME \ --destination-run-region=$REGION \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --location=$REGION \ --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
Uji
Pemicu Pub/Sub membuat topik di balik layar. Mari kita cari tahu dan tetapkan ke variabel:
TOPIC_ID=$(gcloud eventarc triggers describe $TRIGGER_NAME --location $REGION --format='value(transport.pubsub.topic)')
Gunakan gcloud untuk memublikasikan pesan ke topik:
gcloud pubsub topics publish $TOPIC_ID --message="Hello World"
Layanan Cloud Run mencatat isi pesan masuk. Anda dapat melihatnya di bagian Logs pada instance Cloud Run:

Membuat dengan topik Pub/Sub yang ada
Secara default, saat Anda membuat pemicu Pub/Sub, Eventarc akan membuat topik di balik layar untuk Anda gunakan sebagai topik transportasi antara aplikasi dan layanan Cloud Run. Hal ini berguna untuk membuat pemicu yang didukung Pub/Sub dengan mudah dan cepat, tetapi terkadang Anda ingin menggunakan topik yang ada. Eventarc memungkinkan Anda menentukan topik Pub/Sub yang ada dalam project yang sama dengan tanda --transport-topic gcloud.
Untuk melihat cara kerjanya, buat topik Pub/Sub untuk digunakan sebagai topik transportasi:
TOPIC_ID=eventarc-topic gcloud pubsub topics create $TOPIC_ID
Buat pemicu:
TRIGGER_NAME=trigger-pubsub-existing gcloud eventarc triggers create $TRIGGER_NAME \ --destination-run-service=$SERVICE_NAME \ --destination-run-region=$REGION \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --location=$REGION \ --transport-topic=projects/$PROJECT_ID/topics/$TOPIC_ID \ --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
Anda dapat menguji pemicu dengan mengirim pesan ke topik:
gcloud pubsub topics publish $TOPIC_ID --message="Hello again"
7. Membuat pemicu Cloud Storage
Pada langkah ini, Anda akan membuat pemicu untuk memantau peristiwa dari Cloud Storage.
Penyiapan
Pertama, buat bucket untuk menerima peristiwa dari:
BUCKET_NAME=eventarc-gcs-$PROJECT_ID gsutil mb -l $REGION gs://$BUCKET_NAME
Berikan peran eventarc.eventReceiver, sehingga akun layanan dapat digunakan di pemicu Cloud Storage:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --role roles/eventarc.eventReceiver \ --member serviceAccount:$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
Anda juga perlu menambahkan peran pubsub.publisher ke akun layanan Cloud Storage untuk pemicu Cloud Storage:
SERVICE_ACCOUNT_STORAGE=$(gsutil kms serviceaccount -p $PROJECT_ID)
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member serviceAccount:$SERVICE_ACCOUNT_STORAGE \
--role roles/pubsub.publisher
Buat
Buat pemicu untuk merutekan peristiwa pembuatan file baru dari bucket ke layanan Anda:
TRIGGER_NAME=trigger-storage gcloud eventarc triggers create $TRIGGER_NAME \ --destination-run-service=$SERVICE_NAME \ --destination-run-region=$REGION \ --event-filters="type=google.cloud.storage.object.v1.finalized" \ --event-filters="bucket=$BUCKET_NAME" \ --location=$REGION \ --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
Uji
Daftar semua pemicu untuk mengonfirmasi bahwa pemicu berhasil dibuat:
gcloud eventarc triggers list
Upload file ke bucket Cloud Storage:
echo "Hello World" > random.txt gsutil cp random.txt gs://$BUCKET_NAME/random.txt
Jika Anda memeriksa log layanan Cloud Run di Cloud Console, Anda akan melihat peristiwa yang diterima:

8. Membuat pemicu Cloud Audit Logs
Meskipun pemicu Cloud Storage adalah cara yang lebih baik untuk memantau peristiwa Cloud Storage, pada langkah ini, Anda akan membuat pemicu Cloud Audit Log untuk melakukan hal yang sama.
Penyiapan
Untuk menerima peristiwa dari suatu layanan, Anda perlu mengaktifkan Cloud Audit Logs. Dari Konsol Cloud, pilih IAM & Admin dan Audit Logs dari menu kiri atas. Dalam daftar layanan, centang Google Cloud Storage:

Di sisi kanan, pastikan Admin, Read, dan Write dipilih, lalu klik Save:

Buat
Buat pemicu untuk merutekan peristiwa pembuatan file baru dari bucket ke layanan Anda:
TRIGGER_NAME=trigger-auditlog-storage gcloud eventarc triggers create $TRIGGER_NAME\ --destination-run-service=$SERVICE_NAME \ --destination-run-region=$REGION \ --event-filters="type=google.cloud.audit.log.v1.written" \ --event-filters="serviceName=storage.googleapis.com" \ --event-filters="methodName=storage.objects.create" \ --event-filters-path-pattern="resourceName=/projects/_/buckets/$BUCKET_NAME/objects/*" \ --location=$REGION \ --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
Uji
Pemicu Audit Logs memerlukan waktu beberapa saat untuk diinisialisasi. Anda dapat memeriksa apakah pemicu telah dibuat dengan mendaftar semua pemicu:
gcloud eventarc triggers list
Anda akan melihat bahwa kolom ACTIVE adalah Yes:
NAME TYPE DESTINATION ACTIVE trigger-auditlog-storage google.cloud.audit.log.v1.written Cloud Run service: hello Yes
Upload file yang sama ke bucket Cloud Storage seperti yang Anda lakukan sebelumnya:
gsutil cp random.txt gs://$BUCKET_NAME/random.txt
Jika Anda memeriksa log layanan Cloud Run di Cloud Console, Anda akan melihat peristiwa yang diterima:

9. Menjelajahi UI Eventarc
Pada langkah ini, Anda akan menjelajahi UI Eventarc di Konsol Google Cloud. Di UI Eventarc, Anda bisa mendapatkan ringkasan semua pemicu, mengedit dan menghapusnya, serta membuat pemicu baru dari Konsol Google Cloud.
Buka bagian Eventarc di Google Cloud:

Anda akan melihat daftar pemicu yang Anda buat sebelumnya:

Jika mengklik pemicu, Anda dapat melihat detail pemicu, mengedit, atau menghapusnya:

Anda juga dapat membuat pemicu baru dengan memilih Create trigger dan mengisi detail pemicu:

10. Selamat!
Selamat, Anda telah menyelesaikan codelab.
Yang telah kita bahas
- Visi Eventarc
- Menemukan peristiwa di Eventarc
- Membuat sink Cloud Run
- Membuat pemicu untuk Pub/Sub
- Membuat pemicu untuk Cloud Storage
- Membuat pemicu untuk Cloud Audit Logs
- Menjelajahi UI Eventarc