Memublikasikan dan menerima peristiwa dengan membuat bus dan pendaftaran (konsol)
Panduan memulai ini menunjukkan cara memublikasikan dan menerima pesan peristiwa dengan membuat bus Eventarc Advanced dan pendaftaran di project Google CloudAnda.
Bus memungkinkan Anda memusatkan alur pesan melalui sistem, dan bertindak sebagai router. Fungsi ini menerima pesan peristiwa dari sumber pesan atau dipublikasikan oleh penyedia, dan mengevaluasinya sesuai dengan pendaftaran.
Pendaftaran mengidentifikasi langganan ke bus tertentu, dan menentukan kriteria pencocokan untuk pesan, sehingga pesan tersebut dirutekan sesuai dengan satu atau beberapa tujuan.
Dalam panduan memulai ini, Anda akan:
Buat subnet dan aktifkan Akses Google Pribadi.
Buat lampiran jaringan.
Buat repositori standar Artifact Registry.
Men-deploy layanan penerima peristiwa ke Cloud Run.
Buat bus Eventarc Advanced.
Buat pendaftaran Eventarc Advanced.
Memublikasikan pesan peristiwa ke bus.
Lihat data peristiwa di log Cloud Run.
Anda dapat menyelesaikan sebagian besar langkah dalam panduan memulai ini menggunakan Konsol Google Cloud. Untuk menyelesaikan semua langkah menggunakan Google Cloud CLI, lihat Memublikasikan dan menerima peristiwa dengan membuat bus dan pendaftaran (gcloud CLI).
Sebelum memulai
Batasan keamanan yang ditentukan oleh organisasi mungkin mencegah Anda menyelesaikan langkah-langkah berikut. Untuk mengetahui informasi pemecahan masalah, lihat Mengembangkan aplikasi di lingkungan Google Cloud yang terbatas.
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Cloud Build, Cloud Run, Compute Engine, and Eventarc APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Cloud Build, Cloud Run, Compute Engine, and Eventarc APIs.
- Beberapa langkah dalam panduan memulai ini mengharuskan Anda menggunakan gcloud CLI:
- Siapkan gcloud CLI di salah satu lingkungan pengembangan berikut:
Cloud Shell
Untuk menggunakan terminal online dengan gcloud CLI yang sudah disiapkan, aktifkan Cloud Shell:
Di bagian bawah halaman ini, sesi Cloud Shell akan dimulai dan menampilkan perintah command line. Diperlukan waktu beberapa detik untuk melakukan inisialisasi sesi.
Shell lokal
Untuk menggunakan lingkungan pengembangan lokal, ikuti langkah-langkah berikut:
- Pilih project Google Cloud Anda:
gcloud config set project PROJECT_ID
Ganti
PROJECT_ID
dengan nama project Google Cloud Anda. - Perbarui komponen
gcloud
:gcloud components update
- Login menggunakan akun Anda:
gcloud auth login
- Tetapkan variabel konfigurasi yang digunakan dalam panduan memulai ini:
REGION=us-central1
- Siapkan gcloud CLI di salah satu lingkungan pengembangan berikut:
-
Jika Anda adalah project creator, Anda diberi peran Pemilik dasar (
roles/owner
). Secara default, peran Identity and Access Management (IAM) ini mencakup izin yang diperlukan untuk akses penuh ke sebagian besar resource Google Cloud dan Anda dapat melewati langkah ini.Jika Anda bukan project creator, izin yang diperlukan harus diberikan pada project kepada akun utama yang sesuai. Misalnya, akun utama dapat berupa Akun Google (untuk pengguna akhir) atau akun layanan (untuk aplikasi dan workload komputasi).
Perhatikan bahwa secara default, izin Cloud Build mencakup izin untuk mengupload dan mendownload artefak Artifact Registry.
Izin yang diperlukan
Untuk mendapatkan izin yang Anda perlukan untuk menyelesaikan panduan memulai ini, minta administrator untuk memberi Anda peran IAM berikut di project Anda:
-
Editor Cloud Build (
roles/cloudbuild.builds.editor
) -
Cloud Run Admin (
roles/run.admin
) -
Developer Eventarc (
roles/eventarc.developer
) -
Eventarc Message Bus Admin (
roles/eventarc.messageBusAdmin
) -
Logs View Accessor (
roles/logging.viewAccessor
) -
Project IAM Admin (
roles/resourcemanager.projectIamAdmin
) -
Service Account Admin (
roles/iam.serviceAccountAdmin
) -
Service Account User (
roles/iam.serviceAccountUser
) -
Service Usage Admin (
roles/serviceusage.serviceUsageAdmin
)
Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
-
Editor Cloud Build (
- Berikan peran pada project ke
akun layanan default Compute Engine. Peran ini diperlukan untuk mem-build dan men-deploy image
penampung Anda.
- Di konsol Google Cloud, buka halaman IAM.
Untuk mengubah peran akun layanan jika akun tersebut sudah memiliki peran di resource, temukan baris yang berisi akun utama.
atau
Untuk memberikan peran ke akun layanan jika tidak memiliki peran di resource, klik
Berikan Akses, lalu masukkan ID untuk akun layanan default Compute Engine dengan formulir berikut:PROJECT_NUMBER-compute@developer.gserviceaccount.com
Ganti
PROJECT_NUMBER
dengan Google Cloudnomor project Anda. Anda dapat menemukan nomor project di halaman Welcome di konsol Google Cloud.- Klik Edit akun utama di baris yang sesuai.
- Klik Tambahkan peran atau Tambahkan peran lain.
- Di daftar Select a role, filter dan pilih
peran berikut:
- Artifact Registry Writer: untuk mengupload artefak Artifact Registry
- Logs Writer: untuk menulis log ke Cloud Logging
- Pengguna Objek Penyimpanan: untuk mengakses objek Cloud Storage
- Klik Simpan.
- Di konsol Google Cloud, buka halaman IAM.
- Secara default, hanya Project Owner, Project Editor, dan
Cloud Run Admin dan Invoker yang dapat memanggil layanan
Cloud Run. Untuk menyiapkan autentikasi, berikan
peran Cloud Run
Invoker di project Google Cloud Anda ke akun layanan. Untuk tujuan pengujian, Anda akan melampirkan akun layanan ini ke pipeline Eventarc Advanced untuk merepresentasikan identitas pipeline.
- Di Konsol Google Cloud, buka halaman Service accounts.
- Klik Buat akun layanan.
- Masukkan Service account name.
- Klik Buat dan lanjutkan.
- Di daftar Select a role, filter dan pilih peran Cloud Run Invoker.
- Klik Selesai.
Perhatikan bahwa Anda dapat mengonfigurasi siapa saja yang dapat mengakses layanan Cloud Run Anda dengan salah satu cara berikut:
- Berikan izin untuk memilih akun atau grup layanan yang akan mengizinkan akses ke layanan tersebut. Semua permintaan harus memiliki header Otorisasi HTTP yang berisi token OpenID Connect yang ditandatangani oleh Google untuk salah satu akun layanan yang diberi otorisasi. Ini adalah cara akses dikonfigurasi dalam panduan memulai ini.
- Berikan izin ke
allUsers
untuk mengizinkan akses tanpa autentikasi.
Untuk mengetahui informasi selengkapnya, lihat Kontrol akses untuk Cloud Run.
- Di Konsol Google Cloud, buka halaman Service accounts.
Membuat subnet dan mengaktifkan Akses Google Pribadi
Kecuali jika Anda membuat kebijakan organisasi yang melarang beberapa jaringan VPC, project Google Cloud baru dimulai dengan jaringan Virtual Private Cloud (VPC) default (jaringan VPC mode otomatis) yang memiliki satu subnetwork (subnet) di setiap region. Subnet memiliki rentang alamat IP yang terkait dengannya.
Karena Anda merutekan pesan ke tujuan Cloud Run menggunakan alamat DNS, Anda harus mengaktifkan Akses Google Pribadi di subnet yang digunakan dalam lampiran jaringan. Jika tidak, alamat DNS tidak dapat di-resolve. Untuk mengetahui informasi selengkapnya tentang jaringan pribadi dan Cloud Run, lihat Menerima permintaan dari jaringan VPC.
Buat subnet di jaringan default project Anda dan aktifkan Akses Google Pribadi:
Di konsol Google Cloud, buka halaman jaringan VPC.
Dalam daftar jaringan VPC, klik nama default.
Di halaman VPC network details, klik tab Subnets.
Klik
Tambahkan subnet.Di panel Tambahkan subnet, lakukan hal berikut:
- Masukkan Nama—misalnya,
my-subnet
. - Dalam daftar Region, pilih us-central1.
- Masukkan Rentang IPv4 utama untuk subnet—misalnya,
10.8.0.0/24
. - Untuk Akses Google Pribadi, pilih Aktif.
- Setujui semua setelan default lainnya.
- Klik Tambahkan.
- Masukkan Nama—misalnya,
Rentang IP subnet harus unik dan tidak tumpang-tindih dalam jaringan VPC dan jaringan VPC yang di-peering. Untuk mengetahui informasi selengkapnya tentang jenis subnet dan rentang subnet yang valid, lihat Subnet.
Membuat lampiran jaringan
Lampiran jaringan adalah resource yang memungkinkan jaringan VPC produsen memulai koneksi ke jaringan VPC konsumen. Untuk memublikasikan peristiwa, Eventarc Advanced menggunakan lampiran jaringan untuk membuat koneksi ke endpoint yang dihosting di jaringan VPC.
Buat lampiran jaringan di jaringan dan region yang sama yang berisi endpoint tujuan peristiwa, dan yang otomatis menerima koneksi dari antarmuka Private Service Connect mana pun yang merujuk ke lampiran jaringan:
Di Konsol Google Cloud, buka Private Service Connect.
Klik tab Network attachments.
Klik
Create network attachment.Masukkan Nama—misalnya,
my-network-attachment
.Dalam daftar Jaringan, pilih default.
Di daftar Region, pilih us-central1 (Iowa).
Dalam daftar Subnetwork, pilih subnet yang Anda buat sebelumnya.
Klik Automatically accept connections for all projects.
Klik Create network attachment.
Membuat repositori standar Artifact Registry
Buat repositori standar Artifact Registry untuk menyimpan image container Anda.
Di konsol Google Cloud, buka halaman Repositories.
Klik
Buat repositori.Masukkan Nama—misalnya,
my-repo
.Untuk setiap lokasi repositori dalam project, nama repositori harus unik.
Untuk Format repositori, pilih Docker.
Di daftar Region, pilih us-central1 (Iowa).
Setujui semua setelan default lainnya.
Klik Buat.
Men-deploy layanan penerima peristiwa ke Cloud Run
Deploy layanan Cloud Run yang mencatat konten peristiwa ke dalam log. Layanan ini hanya dapat diakses dari jaringan VPC dalam project yang sama, dan URL layanan tidak dapat diakses secara langsung karena layanan hanya mengizinkan pemanggilan terautentikasi.
Di terminal, clone repositori GitHub:
git clone https://github.com/GoogleCloudPlatform/eventarc-samples.git
Ubah ke direktori yang memuat kode contoh Cloud Run:
cd eventarc-samples/eventarc-advanced-quickstart/
Build image container Docker dan kirim image ke repositori Anda:
gcloud builds submit \ --tag $REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/log-events:v1
Ganti
REPOSITORY
dengan nama repositori Artifact Registry Anda.Men-deploy image container ke Cloud Run
Pada konsol Google Cloud, buka halaman Cloud Run.
Klik > Service.
Deploy containerPilih Men-deploy satu revisi dari image container yang sudah ada.
Untuk Container image URL, klik Select untuk menentukan image container Artifact Registry yang sebelumnya Anda buat.
Jika ingin, Anda dapat mengubah Nama layanan—misalnya, menjadi
my-service
.Di daftar Region, pilih us-central1 (Iowa).
Untuk Authentication, pilih Require authentication.
Untuk Ingress, pilih Internal.
Setujui semua setelan default lainnya.
Klik Create dan tunggu hingga deployment selesai.
Membuat bus Advanced Eventarc
Bus menerima pesan peristiwa dari sumber pesan atau dipublikasikan oleh penyedia dan berfungsi sebagai router pesan.
Untuk informasi selengkapnya, lihat Membuat bus untuk merutekan pesan.
Di konsol Google Cloud, buka halaman Eventarc > Bus.
Klik
Buat bus.Di halaman Create a bus, lakukan hal berikut:
- Masukkan Nama bus—misalnya,
my-bus
. - Di daftar Region, pilih us-central1 (Iowa).
- Masukkan Nama bus—misalnya,
Setujui semua setelan default lainnya.
Klik Buat.
Membuat pendaftaran Eventarc Advanced
Pendaftaran menentukan pesan mana yang dirutekan ke tujuan dan juga menentukan pipeline yang digunakan untuk mengonfigurasi tujuan pesan peristiwa.
Untuk mengetahui informasi selengkapnya, lihat Membuat pendaftaran untuk menerima peristiwa.
Saat menggunakan konsol Google Cloud, Anda dapat membuat pendaftaran dan pipeline secara bersamaan.
Untuk membuat pendaftaran, di konsol Google Cloud, buka halaman Eventarc > Pipelines.
Klik
Buat pipeline.Di panel Pipeline details, lakukan hal berikut:
- Masukkan Nama pipeline—misalnya,
my-pipeline
. - Di daftar Region, pilih us-central1 (Iowa). Pipeline harus dibuat di region yang sama dengan bus.
- Setujui semua setelan default lainnya.
- Klik Lanjutkan.
- Masukkan Nama pipeline—misalnya,
Di panel Pendaftaran, lakukan hal berikut:
- Klik Tambahkan pendaftaran.
- Masukkan Nama pendaftaran—misalnya,
my-enrollment
. - Dalam daftar Eventarc Advanced Bus, pilih bus yang Anda buat sebelumnya.
Di kolom ekspresi CEL, tulis ekspresi evaluasi menggunakan CEL. Contoh:
message.type == "hello-world-type"
Klik Selesai.
Klik Lanjutkan.
Di panel Mediasi peristiwa, klik Lanjutkan lagi.
Di panel Destination, lakukan hal berikut:
Dalam daftar Jenis tujuan, pilih Layanan Cloud Run (melalui HTTP), lalu pilih layanan Cloud Run yang sebelumnya Anda buat.
Dalam daftar Network attachment, pilih lampiran jaringan yang sebelumnya Anda buat.
Centang kotak Enable authentication.
Dalam daftar Header autentikasi, pilih Token OIDC.
Dalam daftar Service account, pilih akun layanan yang sebelumnya Anda buat dan yang akan memanggil layanan tujuan. Email akun layanan ini digunakan untuk membuat token OIDC.
Klik Buat.
Memublikasikan pesan peristiwa ke bus
Untuk memublikasikan pesan secara langsung ke bus, Anda dapat menggunakan perintah gcloud beta eventarc message-buses publish
atau mengirim permintaan ke Eventarc Publishing REST API. Untuk mengetahui informasi selengkapnya, lihat Memublikasikan peristiwa secara langsung.
Pesan harus dalam format CloudEvents yang merupakan spesifikasi untuk mendeskripsikan data peristiwa dengan cara yang umum. Elemen data
adalah payload peristiwa Anda. JSON yang disusun dengan baik dapat dimasukkan ke kolom ini. Untuk informasi selengkapnya tentang atribut konteks CloudEvents, lihat Format peristiwa.
Publikasikan peristiwa ke bus Eventarc Advanced menggunakan gcloud CLI dan --event-data
serta flag atribut peristiwa lainnya:
gcloud beta eventarc message-buses publish BUS_NAME \
--event-data='{"key": "hello-world-data"}' \
--event-id=hello-world-id-1234 \
--event-source=hello-world-source \
--event-type=hello-world-type \
--event-attributes="datacontenttype=application/json" \
--location=$REGION
Atau, publikasikan peristiwa ke bus Eventarc Advanced sebagai pesan JSON menggunakan gcloud CLI dan flag --json-message
:
gcloud beta eventarc message-buses publish BUS_NAME \
--location=$REGION \
--json-message='{"id": "hello-world-id-1234", "type":
"hello-world-type", "source":
"hello-world-source", "specversion": "1.0", "data":
{"key": "hello-world-data"}}'
Setelah memublikasikan peristiwa, Anda akan menerima pesan "Peristiwa berhasil dipublikasikan".
Melihat data peristiwa di log Cloud Run
Setelah memublikasikan peristiwa ke bus Eventarc Advanced, Anda dapat memeriksa log layanan Cloud Run untuk memverifikasi bahwa peristiwa diterima seperti yang diharapkan.
Pada konsol Google Cloud, buka halaman Cloud Run.
Di halaman Layanan, klik nama layanan Anda.
Klik tab Logs.
Anda dapat memfilter entri log dan menampilkan output. Misalnya, Anda dapat menelusuri
hello-world-data
.Cari entri log yang mirip dengan berikut ini:
2025-02-27 08:36:44.350 EST [2025-02-27 13:36:44,352] INFO in server: Body: b'{"key": "hello-world-data"}'
Anda telah berhasil membuat bus dan pendaftaran Eventarc Advanced, memublikasikan pesan peristiwa ke bus, dan memverifikasi hasil yang diharapkan dalam log layanan penerima peristiwa.
Pembersihan
Setelah menyelesaikan tugas yang dijelaskan dalam panduan memulai ini, Anda dapat menghindari penagihan berkelanjutan dengan menghapus resource yang Anda buat:
Hapus resource Eventarc Advanced:
Atau, Anda dapat menghapus project Google Cloud untuk menghindari tagihan. Menghapus project Google Cloud Anda akan menghentikan penagihan untuk semua resource yang digunakan dalam project tersebut.
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.