Memublikasikan dan menerima peristiwa dengan membuat bus dan pendaftaran (Terraform)
Panduan memulai ini menunjukkan cara menggunakan Terraform untuk membuat dan mendaftarkan bus Eventarc Advanced di project Google Cloud Anda sehingga Anda dapat memublikasikan dan menerima pesan peristiwa.
Bus bertindak sebagai router pusat, yang menerima pesan dari sumber peristiwa atau dipublikasikan oleh penyedia.
Pendaftaran merutekan pesan yang diterima oleh bus ke satu atau beberapa tujuan melalui pipeline pemrosesan.
Dalam panduan memulai ini, Anda akan:
Men-deploy layanan penerima peristiwa ke Cloud Run.
Buat bus Advanced Eventarc.
Aktifkan peristiwa dari sumber Google.
Buat pipeline dan pendaftaran Lanjutan Eventarc.
Publikasikan pesan peristiwa ke bus dengan membuat alur kerja.
Lihat data peristiwa di log Cloud Run.
Anda dapat menyelesaikan sebagian besar langkah dalam panduan memulai ini menggunakan Terraform. Untuk menyelesaikan semua langkah menggunakan Google Cloud CLI, lihat Memublikasikan peristiwa dari sumber Google.
Untuk mengetahui informasi selengkapnya tentang cara menggunakan Terraform, lihat dokumentasi Terraform di Google Cloud.
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.
- Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Cloud Resource Manager and Identity and Access Management (IAM) APIs.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Cloud Resource Manager and Identity and Access Management (IAM) APIs.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Di konsol Google Cloud , aktifkan Cloud Shell.
Di bagian bawah konsol Google Cloud , sesi Cloud Shell akan dimulai dan menampilkan perintah command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi pada sesi.
Terraform terintegrasi ke dalam lingkungan Cloud Shell dan Anda dapat menggunakan Cloud Shell untuk men-deploy resource Terraform tanpa harus menginstal Terraform.
Peran yang diperlukan
Untuk mendapatkan izin yang Anda perlukan untuk menyelesaikan panduan memulai cepat ini, minta administrator Anda untuk memberi Anda peran IAM berikut di project Anda:
- 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) - Workflows Editor (
roles/workflows.editor)
Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
Bersiap untuk men-deploy Terraform
Sebelum men-deploy resource Terraform, Anda harus membuat file konfigurasi Terraform. File konfigurasi Terraform memungkinkan Anda menentukan status akhir pilihan untuk infrastruktur menggunakan sintaksis Terraform.
Di Cloud Shell, tetapkan project Google Cloud default tempat Anda ingin menerapkan konfigurasi Terraform. Anda hanya perlu menjalankan perintah ini sekali per project, dan dapat dieksekusi di direktori mana pun:
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Ganti
PROJECT_IDdengan ID project Google Cloud Anda.Perhatikan bahwa variabel lingkungan akan diganti jika Anda menetapkan nilai eksplisit dalam file konfigurasi Terraform.
Setiap file konfigurasi Terraform harus memiliki direktorinya sendiri (juga disebut modul root). Di Cloud Shell, buat direktori dan file baru di dalam direktori tersebut:
mkdir DIRECTORY && cd DIRECTORY && touch main.tf
Ganti
DIRECTORYdengan nama direktori Terraform Anda.Nama file harus memiliki ekstensi
.tf—misalnya, dalam panduan memulai ini, file konfigurasi adalahmain.tf.
Tentukan konfigurasi Terraform Anda
Salin cuplikan kode Terraform berikut ke dalam file main.tf Anda. Atau, untuk menyalin
seluruh contoh kode dari GitHub, di pojok kanan atas cuplikan kode,
klik
>
Lihat di GitHub.
Mengaktifkan API
Gunakan resource Terraform
google_project_service
untuk mengaktifkan API yang diperlukan untuk menerapkan konfigurasi
Terraform:
Membuat akun layanan
Untuk tujuan pengujian, buat akun layanan khusus, dan berikan peran IAM tertentu.
Gunakan resource Terraform
google_service_account
dan google_project_iam_member
untuk membuat akun layanan dan memberikan peran yang diperlukan
untuk memublikasikan dan menerima peristiwa:
Membuat tujuan peristiwa
Gunakan resource Terraform
google_cloud_run_v2_service
untuk membuat
layanan Cloud Run
sebagai tujuan peristiwa yang mencatat konten peristiwa:
Membuat bus Eventarc Advanced
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.
Gunakan resource Terraform
google_eventarc_message_bus
untuk membuat bus Eventarc Advanced:
Mengaktifkan peristiwa dari sumber Google
Untuk memublikasikan peristiwa dari sumber Google, Anda harus membuat resource
GoogleApiSource
yang merepresentasikan langganan ke peristiwa Google API untuk bus Eventarc Advanced tertentu. Untuk mengetahui informasi selengkapnya, lihat
Memublikasikan peristiwa dari sumber Google.
Gunakan resource Terraform
google_eventarc_google_api_source
untuk mengaktifkan peristiwa dari sumber Google:
Semua jenis acara Google yang didukung yang dikirim langsung dari sumber Google kini dikumpulkan dan dipublikasikan ke bus Anda.
Membuat pipeline Lanjutan Eventarc
Pipeline memungkinkan Anda mengonfigurasi tujuan target dan juga memberikan opsi untuk mengubah peristiwa yang cocok sebelum mengirimkannya ke tujuan.
Gunakan resource Terraform
google_eventarc_pipeline
untuk membuat pipeline:
Tujuan peristiwa adalah URL yang sepenuhnya memenuhi syarat dari layanan Cloud Run
Anda—misalnya,
https://SERVICE_NAME-abcdef-uc.a.run.app. Alamat email akun layanan digunakan untuk membuat
token OIDC.
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.
Gunakan resource Terraform
google_eventarc_enrollment
untuk membuat pendaftaran:
Ekspresi pencocokan untuk pendaftaran menggunakan Common Expression Language (CEL) untuk memublikasikan pesan peristiwa setiap kali alur kerja dibuat. Pada langkah berikutnya, Anda akan membuat alur kerja.
Menerapkan konfigurasi Terraform
Gunakan Terraform CLI untuk menyediakan infrastruktur berdasarkan file konfigurasi. Untuk mengetahui informasi selengkapnya, lihat Perintah Terraform dasar.
Lakukan inisialisasi Terraform. Anda hanya perlu melakukannya sekali per direktori.
terraform init
Secara opsional, untuk menggunakan versi penyedia Google terbaru, sertakan opsi
-upgrade:terraform init -upgrade
Tinjau konfigurasi dan pastikan resource yang akan dibuat atau diupdate oleh Terraform sesuai yang Anda inginkan:
terraform plan
Perbaiki konfigurasi jika diperlukan.
Terapkan konfigurasi Terraform dengan menjalankan perintah berikut dan memasukkan
yespada prompt:terraform apply
Biasanya, Anda menerapkan seluruh konfigurasi sekaligus. Namun, Anda juga dapat menargetkan resource tertentu. Contoh:
terraform apply -target="google_eventarc_message_bus.default"
Tunggu hingga Terraform menampilkan pesan "Apply complete!".
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.
Di direktori beranda, buat file baru bernama
myWorkflow.yaml.Salin dan tempel alur kerja berikut ke dalam file baru, lalu simpan:
main: params: [input] steps: - checkSearchTermInInput: switch: - condition: '${"searchTerm" in input}' assign: - searchTerm: '${input.searchTerm}' next: readWikipedia - getLocation: call: sys.get_env args: name: GOOGLE_CLOUD_LOCATION result: location - setFromCallResult: assign: - searchTerm: '${text.split(location, "-")[0]}' - readWikipedia: call: http.get args: url: 'https://en.wikipedia.org/w/api.php' query: action: opensearch search: '${searchTerm}' result: wikiResult - returnOutput: return: '${wikiResult.body[1]}'Alur kerja ini meneruskan region tempat alur kerja di-deploy ke Wikipedia API dan menampilkan daftar artikel Wikipedia terkait.
Deploy alur kerja menggunakan perintah
gcloud workflows deploy:gcloud workflows deploy example-workflow --source=myWorkflow.yaml \ --service-account=eventarc-advanced-sa@PROJECT_ID.iam.gserviceaccount.com \ --location=us-central1
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.
Memfilter entri log yang dibuat oleh layanan Anda:
gcloud logging read 'jsonPayload.message: "Received event of type google.cloud.workflows.workflow.v1.created."'Cari entri log yang mirip dengan berikut ini:
message: 'Received event of type google.cloud.workflows.workflow.v1.created. Event data: {"@type":"type.googleapis.com/google.events.cloud.workflows.v1.WorkflowEventData","payload":{"name":"projects/PROJECT_ID/locations/us-central1/workflows/example-workflow","state":"ACTIVE"...
Anda telah berhasil membuat pendaftaran dan bus Eventarc Advanced, mengaktifkan publikasi peristiwa dari sumber Google, membuat alur kerja untuk menghasilkan jenis peristiwa yang didukung dari penyedia Google, lalu memverifikasi hasil yang diharapkan di log layanan penerima peristiwa.
Pembersihan
Hapus resource yang sebelumnya diterapkan dengan konfigurasi Terraform Anda dengan menjalankan perintah
berikut dan memasukkan yes pada prompt:
terraform destroy
Anda juga dapat menghapus project Google Cloud untuk menghindari tagihan. Menghapus Google Cloud project akan menghentikan penagihan untuk semua resource yang digunakan dalam project tersebut.
- Di konsol Google Cloud , buka halaman Manage resources.
- Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
- Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.