Memublikasikan peristiwa dari sumber Google
Anda dapat mengaktifkan pengumpulan dan publikasi acara dari sumber Google. Untuk informasi selengkapnya, lihat Memublikasikan peristiwa dari sumber Google.
Panduan memulai ini menunjukkan cara memublikasikan dan menerima pesan peristiwa dengan membuat pendaftaran dan bus Eventarc Advanced di project Google Cloud Anda.
Bus memungkinkan Anda memusatkan alur pesan melalui sistem, dan bertindak sebagai router. Layanan ini menerima pesan peristiwa dari sumber pesan atau yang 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:
Men-deploy layanan penerima peristiwa ke Cloud Run.
Buat bus Advanced Eventarc.
Aktifkan peristiwa dari sumber Google.
Buat pendaftaran Lanjutan Eventarc.
Publikasikan pesan peristiwa ke bus dengan membuat alur kerja.
Lihat data peristiwa di log Cloud Run.
Anda dapat menyelesaikan panduan memulai ini menggunakan 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 yang terbatas Google Cloud .
- 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.
-
Install the Google Cloud CLI.
-
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
-
Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Cloud Build, Cloud Run, Eventarc, and Workflows APIs:
gcloud services enable artifactregistry.googleapis.com
cloudbuild.googleapis.com eventarc.googleapis.com eventarcpublishing.googleapis.com run.googleapis.com workflows.googleapis.com -
Install the Google Cloud CLI.
-
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
-
Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Cloud Build, Cloud Run, Eventarc, and Workflows APIs:
gcloud services enable artifactregistry.googleapis.com
cloudbuild.googleapis.com eventarc.googleapis.com eventarcpublishing.googleapis.com run.googleapis.com workflows.googleapis.com - Perbarui komponen
gcloud
:gcloud components update
- Login menggunakan akun Anda:
gcloud auth login
- Tetapkan variabel konfigurasi yang digunakan dalam panduan memulai ini:
REGION=REGION
Ganti
REGION
dengan lokasi yang didukung untuk bus—misalnya,us-central1
. -
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 Anda untuk memberi Anda peran IAM berikut di project Anda:
-
Editor Cloud Build (
roles/cloudbuild.builds.editor
) -
Admin Cloud Run (
roles/run.admin
) -
Eventarc Developer (
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
-
Workflows Editor (
roles/workflows.editor
)
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 berikut di project ke
akun layanan default
Compute Engine. Peran ini diperlukan saat membangun dan men-deploy image container Anda:
- Penulis Artifact Registry (
roles/artifactregistry.writer
): untuk mengupload artefak Artifact Registry - Penulis Log
(
roles/logging.logWriter
): untuk menulis log ke Cloud Logging - Objek Penyimpanan
Pengguna (
roles/storage.objectUser
): untuk mengakses objek Cloud Storage
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/artifactregistry.writer gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/logging.logWriter gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/storage.objectUser
Ganti
PROJECT_NUMBER
dengan Google Cloud nomor project Anda. Anda dapat menemukan nomor project di halaman Selamat Datang di konsol Google Cloud atau dengan menjalankan perintah berikut:gcloud projects describe PROJECT_ID --format='value(projectNumber)'
- Penulis Artifact Registry (
- Secara default, hanya Pemilik Project, Editor Project, serta
Admin dan Pemanggil Cloud Run yang dapat memanggil layanan Cloud Run. Untuk
menyiapkan autentikasi, berikan
peran Cloud Run
Invoker (
run.invoker
) di project Google Cloud Anda ke akun layanan:- Membuat akun layanan. Untuk tujuan pengujian, Anda akan melampirkan akun layanan ini ke pipeline Lanjutan Eventarc untuk merepresentasikan identitas pipeline.
Gantigcloud iam service-accounts create SERVICE_ACCOUNT_NAME
SERVICE_ACCOUNT_NAME
dengan nama untuk akun layanan Anda. - Berikan peran IAM
roles/run.invoker
ke akun layanan:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" \ --role=roles/run.invoker
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. Dengan cara inilah 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.
- Membuat akun layanan. Untuk tujuan pengujian, Anda akan melampirkan akun layanan ini ke pipeline Lanjutan Eventarc untuk merepresentasikan identitas pipeline.
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 Artifact Registry—misalnya,my-repo
.Buat 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/
Bangun image container Docker dan kirim image ke repositori Anda:
gcloud builds submit \ --tag $REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/log-events:v1
Men-deploy image container ke Cloud Run
gcloud run deploy SERVICE_NAME \ --image $REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/log-events:v1 \ --platform managed \ --ingress all \ --no-allow-unauthenticated \ --region=$REGION
Ganti
SERVICE_NAME
dengan nama layanan Anda—misalnya,my-service
.Perhatikan hal berikut:
Flag
--platform
menetapkan platform target, dalam hal ini versi Cloud Run yang terkelola sepenuhnya.Setelan ingress
all
mengizinkan semua permintaan, termasuk permintaan langsung dari internet ke URLrun.app
. Untuk mengetahui informasi selengkapnya, lihat Membatasi traffic masuk jaringan untuk Cloud Run.Flag
--no-allow-unauthenticated
mengonfigurasi layanan agar hanya mengizinkan pemanggilan terautentikasi.Jika Anda melihat URL layanan Cloud Run, berarti deployment telah selesai.
Salin dan simpan URL layanan Cloud Run karena Anda akan menggunakannya pada langkah berikutnya.
Buat pipeline menggunakan perintah
gcloud eventarc pipelines create
:gcloud eventarc pipelines create PIPELINE_NAME \ --destinations=http_endpoint_uri='CLOUD_RUN_SERVICE_URL',google_oidc_authentication_service_account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --location=$REGION
Ganti kode berikut:
PIPELINE_NAME
: ID pipeline atau nama yang sepenuhnya memenuhi syarat—misalnya,my-pipeline
.CLOUD_RUN_SERVICE_URL
: URL yang sepenuhnya memenuhi syarat dari layanan Cloud Run Anda—misalnya,https://SERVICE_NAME-abcdef-uc.a.run.app
. Ini adalah tujuan untuk pesan acara Anda.
Perhatikan bahwa kunci
google_oidc_authentication_service_account
menentukan email akun layanan yang digunakan untuk membuat token OIDC.Buat pendaftaran menggunakan perintah
gcloud eventarc enrollments create
:gcloud eventarc enrollments create ENROLLMENT_NAME \ --cel-match=MATCH_EXPRESSION \ --destination-pipeline=PIPELINE_NAME \ --message-bus=BUS_NAME \ --message-bus-project=PROJECT_ID \ --location=$REGION
Ganti kode berikut:
ENROLLMENT_NAME
: ID pendaftaran atau nama yang sepenuhnya memenuhi syarat—misalnya,my-enrollment
.MATCH_EXPRESSION
: ekspresi pencocokan untuk pendaftaran ini menggunakan CEL—misalnya, untuk memublikasikan pesan peristiwa setiap kali alur kerja Workflows dibuat, gunakan ekspresi berikut:"message.type == 'google.cloud.workflows.workflow.v1.created'"
Di direktori beranda Anda, buat file baru bernama
myWorkflow.yaml
.Salin dan tempel alur kerja berikut ke dalam file baru, lalu simpan:
- getCurrentTime: call: http.get args: url: https://timeapi.io/api/Time/current/zone?timeZone=Europe/Amsterdam result: currentTime - readWikipedia: call: http.get args: url: https://en.wikipedia.org/w/api.php query: action: opensearch search: ${currentTime.body.dayOfWeek} result: wikiResult - returnResult: return: ${wikiResult.body[1]}
Alur kerja ini meneruskan hari dalam seminggu saat ini sebagai istilah penelusuran ke Wikipedia API. Daftar artikel Wikipedia terkait ditampilkan.
Deploy alur kerja dan kaitkan dengan akun layanan yang ditentukan menggunakan perintah
gcloud workflows deploy
:gcloud workflows deploy myWorkflow --source=myWorkflow.yaml \ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --location=$REGION
Filter entri log dan tampilkan output menggunakan perintah
gcloud logging read
:gcloud logging read 'textPayload: "google.cloud.workflows.workflow.v1.created"'
Cari entri log yang mirip dengan berikut ini:
insertId: 689644c30004cde066603b3a labels: instanceId: 0069c7a98846e3b870396a63478212b9642512ef362b67c33090846e10498949c671ccfefbc66f4f093796406e9a714bebc6fbb82f321578134ef95e56f9e9986c3265d2820b56f7994617ba7172ab logName: projects/PROJECT_ID/logs/run.googleapis.com%2Fstderr receiveTimestamp: '2025-08-08T18:41:07.632226222Z' resource: labels: ... type: cloud_run_revision textPayload: 'Ce-Type: google.cloud.workflows.workflow.v1.created' timestamp: '2025-08-08T18:41:07.314848Z'
Hapus resource Eventarc Advanced:
Men-deploy layanan penerima peristiwa ke Cloud Run
Deploy layanan Cloud Run sebagai tujuan peristiwa yang mencatat konten peristiwa. Tujuan peristiwa lainnya didukung seperti topik Pub/Sub, Workflows, atau endpoint HTTP. Untuk mengetahui informasi selengkapnya, lihat Penyedia dan tujuan peristiwa.
Membuat bus Tingkat lanjut Eventarc
Bus menerima pesan peristiwa dari sumber pesan atau yang dipublikasikan oleh penyedia dan bertindak sebagai router pesan.
Untuk mengetahui informasi selengkapnya, lihat Membuat bus untuk merutekan pesan.
Buat bus Eventarc Advanced di project Anda menggunakan perintah
gcloud eventarc message-buses create
:
gcloud eventarc message-buses create BUS_NAME \ --location=$REGION
Ganti BUS_NAME
dengan ID bus atau nama yang sepenuhnya memenuhi syarat—misalnya, my-bus
.
Mengaktifkan peristiwa dari sumber Google
Untuk memublikasikan peristiwa dari sumber Google, Anda harus membuat resource
GoogleApiSource
. Resource ini merepresentasikan langganan ke peristiwa Google API untuk bus Eventarc Advanced tertentu dalam project dan region tertentu. Google Cloud
Aktifkan peristiwa dari sumber Google menggunakan perintah
gcloud eventarc google-api-sources create
:
gcloud eventarc google-api-sources create GOOGLE_API_SOURCE_NAME \ --destination-message-bus=BUS_NAME \ --destination-message-bus-project=PROJECT_ID \ --location=$REGION
Ganti GOOGLE_API_SOURCE_NAME
dengan ID resource GoogleApiSource
Anda atau nama yang sepenuhnya memenuhi syarat—misalnya, my-google-api-source
.
Semua jenis acara Google yang didukung yang dikirim langsung dari sumber Google kini dikumpulkan dan dipublikasikan ke bus Anda.
Membuat pendaftaran Lanjutan Eventarc
Pendaftaran menentukan pesan mana yang dirutekan ke tujuan dan juga menentukan pipeline yang digunakan untuk mengonfigurasi tujuan bagi pesan peristiwa.
Untuk mengetahui informasi selengkapnya, lihat Membuat pendaftaran untuk menerima peristiwa.
Saat menggunakan gcloud CLI, Anda harus membuat pipeline terlebih dahulu, lalu membuat pendaftaran:
Memublikasikan pesan peristiwa ke bus dengan membuat alur kerja
Workflows adalah platform orkestrasi terkelola sepenuhnya yang mengeksekusi layanan dalam urutan yang Anda tentukan: alur kerja. Buat alur kerja untuk membuat jenis peristiwa yang didukung dari sumber Google.
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.
Anda telah berhasil membuat pendaftaran dan bus Lanjutan Eventarc, mengaktifkan publikasi peristiwa dari sumber Google, membuat alur kerja untuk menghasilkan jenis peristiwa yang didukung dari penyedia Google, lalu 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:
Atau, Anda dapat menghapus project Google Cloud untuk menghindari tagihan. Menghapus project akan menghentikan penagihan untuk semua resource yang digunakan dalam project tersebut. Google Cloud
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID