Menerima peristiwa menggunakan pesan Pub/Sub (Terraform)
Panduan memulai ini menunjukkan cara menggunakan Terraform untuk membuat pemicu Eventarc yang menerima peristiwa langsung dari Pub/Sub dan merutekan peristiwa ke layanan Cloud Run. Untuk informasi selengkapnya tentang penggunaan Terraform untuk membuat pemicu Eventarc, lihat Membuat pemicu menggunakan Terraform.
Dalam panduan memulai ini, Anda akan melakukan hal berikut:
Bersiap untuk men-deploy Terraform.
Tentukan konfigurasi Terraform yang melakukan hal berikut:
- Mengaktifkan API
- Buat akun layanan dan berikan peran Identity and Access Management (IAM) yang diperlukan.
- Men-deploy layanan ke Cloud Run sebagai tujuan peristiwa.
- Buat topik Pub/Sub sebagai penyedia peristiwa.
- Buat pemicu Eventarc.
Terapkan konfigurasi Terraform Anda.
Publikasikan pesan ke topik Pub/Sub untuk membuat peristiwa, dan lihat di log Cloud Run.
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.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
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.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Resource Manager and IAM APIs:
gcloud services enable cloudresourcemanager.googleapis.com
iam.googleapis.com -
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
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.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Resource Manager and IAM APIs:
gcloud services enable cloudresourcemanager.googleapis.com
iam.googleapis.com -
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
-
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). Untuk mengetahui informasi selengkapnya, lihat halaman eran dan izin untuk tujuan peristiwa Anda.
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:
-
Cloud Run Admin (
roles/run.admin
) -
Eventarc Admin (
roles/eventarc.admin
) -
Logs View Accessor (
roles/logging.viewAccessor
) -
Project IAM Admin (
roles/resourcemanager.projectIamAdmin
) -
Pub/Sub Publisher (
roles/pubsub.publisher
) -
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.
-
Cloud Run Admin (
Bersiap untuk men-deploy Terraform
Bersiaplah untuk men-deploy resource Terraform dengan membuat file konfigurasi Terraform. File konfigurasi Terraform memungkinkan Anda menentukan status akhir yang diinginkan untuk infrastruktur menggunakan sintaksis Terraform.
Jika Anda menggunakan shell lokal, instal dan konfigurasikan Terraform.
Terraform sudah terintegrasi ke dalam lingkungan Cloud Shell dan Anda dapat menggunakan Cloud Shell untuk men-deploy resource Terraform tanpa harus menginstal Terraform.
Di Cloud Shell atau shell lokal, tetapkan project Google Cloud default tempat Anda ingin menerapkan konfigurasi Terraform. Anda hanya perlu menjalankan perintah ini sekali per project, dan dapat menjalankannya di direktori mana pun:
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Ganti
PROJECT_ID
dengan ID project Google Cloud Anda.
Perhatikan bahwa variabel lingkungan akan diganti jika Anda menetapkan nilai eksplisit dalam file konfigurasi Terraform.
Menyiapkan direktori
Setiap file konfigurasi Terraform harus memiliki direktorinya sendiri (juga disebut modul root). Buat direktori dan buat file baru dalam direktori tersebut:
mkdir DIRECTORY && cd DIRECTORY && touch main.tf
Nama file harus memiliki ekstensi .tf
—misalnya, dalam panduan memulai ini, file disebut sebagai main.tf
.
Menentukan konfigurasi Terraform
Salin cuplikan kode Terraform berikut ke dalam file main.tf
yang baru saja Anda buat. Atau, Anda dapat menyalin kode dari GitHub. (Di
sudut kanan atas cuplikan kode, klik
>
Lihat di GitHub.)
Mengaktifkan API
Contoh Terraform biasanya mengasumsikan bahwa API yang diperlukan diaktifkan di project Google Cloud Anda. Gunakan cuplikan kode berikut untuk mengaktifkan API yang diperlukan untuk panduan memulai ini:
Membuat akun layanan dan mengonfigurasi aksesnya
Setiap pemicu Eventarc dikaitkan dengan akun layanan IAM. Untuk menyelesaikan panduan memulai ini, Anda harus memberikan peran IAM berikut ke akun layanan yang dikelola pengguna:
-
Peran Cloud Run Invoker (
roles/run.invoker
) -
Peran Pub/Sub Publisher (
roles/pubsub.publisher
)
Gunakan cuplikan kode berikut untuk membuat akun layanan khusus dan berikan peran IAM tertentu untuk mengelola peristiwa:
Jika Anda mengaktifkan agen layanan Pub/Sub pada atau sebelum 8 April
2021, berikan
peran
Service Account Token Creator (roles/iam.serviceAccountTokenCreator
)
ke agen layanan.
resource "google_project_iam_member" "tokencreator" { project = data.google_project.project.id role = "roles/iam.serviceAccountTokenCreator" member = "serviceAccount:service-${data.google_project.project.number}@gcp-sa-pubsub.iam.gserviceaccount.com" }
Men-deploy penerima peristiwa ke Cloud Run
Buat layanan Cloud Run sebagai tujuan peristiwa untuk pemicu Eventarc menggunakan resource Terraform google_cloud_run_v2_service
:
Membuat topik Pub/Sub sebagai penyedia peristiwa
Buat topik Pub/Sub menggunakan resource Terraform google_pubsub_topic
:
Membuat pemicu Eventarc
Buat pemicu Eventarc untuk memproses pesan Pub/Sub menggunakan resource Terraform google_eventarc_trigger
:
Menerapkan Terraform
Gunakan Terraform CLI untuk menyediakan infrastruktur berdasarkan file konfigurasi.
Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform.
Lakukan inisialisasi Terraform. Anda hanya perlu melakukan ini 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 dengan ekspektasi Anda:
terraform plan
Koreksi konfigurasi jika diperlukan.
Terapkan konfigurasi Terraform dengan menjalankan perintah berikut dan memasukkan
yes
pada prompt:terraform apply
Biasanya, Anda menerapkan seluruh konfigurasi sekaligus. Namun, Anda juga dapat menargetkan resource tertentu. Contoh:
terraform apply -target="google_eventarc_trigger.default"
Setelah mengaktifkan API, mungkin perlu waktu beberapa menit agar tindakan tersebut diterapkan dan sebelum Anda dapat men-deploy resource lebih lanjut. Jika Anda mengalami masalah, coba terapkan kembali konfigurasi Terraform.
Tunggu hingga Terraform menampilkan pesan "Apply complete!".
Memverifikasi pembuatan resource
Pastikan layanan Cloud Run telah dibuat:
gcloud run services list --region us-central1
Outputnya akan mirip dengan berikut ini:
SERVICE: hello-events REGION: us-central1 URL: https://hello-events-13335919645.us-central1.run.app LAST DEPLOYED BY: ... LAST DEPLOYED AT: 2024-12-16T15:00:52.606160Z
Pastikan pemicu Eventarc telah dibuat:
gcloud eventarc triggers list --location us-central1
Outputnya akan mirip dengan berikut ini:
NAME: trigger-pubsub-cloudrun-tf TYPE: google.cloud.pubsub.topic.v1.messagePublished DESTINATION: Cloud Run service: hello-events ACTIVE: Yes LOCATION: us-central1
Membuat dan melihat peristiwa topik Pub/Sub
Anda dapat membuat peristiwa dengan memublikasikan pesan ke topik Pub/Sub. Pemicu Eventarc merutekan pesan ke layanan penerima peristiwa yang di-deploy di Cloud Run dan layanan mencatat pesan peristiwa ke dalam log.
Cari dan tetapkan topik Pub/Sub sebagai variabel lingkungan:
gcloud config set eventarc/location us-central1 export RUN_TOPIC=$(gcloud eventarc triggers describe trigger-pubsub-cloudrun-tf \ --format='value(transport.pubsub.topic)')
Publikasikan pesan ke topik Pub/Sub untuk membuat peristiwa:
gcloud pubsub topics publish $RUN_TOPIC --message "Hello World!"
Peristiwa dirutekan ke layanan Cloud Run, yang mencatat pesan peristiwa ke dalam log.
Untuk melihat entri log terkait peristiwa yang dibuat oleh layanan Anda, jalankan perintah berikut:
gcloud logging read 'jsonPayload.message: "Received event of type google.cloud.pubsub.topic.v1.messagePublished"'
Cari entri log yang mirip dengan:
jsonPayload: ... message: 'Received event of type google.cloud.pubsub.topic.v1.messagePublished. Event data: Hello World!'
Anda telah berhasil menggunakan Terraform untuk men-deploy layanan penerima peristiwa ke Cloud Run dan membuat pemicu Eventarc. Setelah membuat peristiwa dari Pub/Sub, Anda dapat melihatnya di log Cloud Run.
Pembersihan
Setelah menyelesaikan tugas yang dijelaskan dalam panduan memulai ini, Anda dapat menghindari penagihan berkelanjutan dengan menghapus resource yang Anda buat.
Hapus resource yang sebelumnya diterapkan dengan konfigurasi Terraform Anda dengan menjalankan perintah
berikut dan memasukkan yes
pada prompt:
terraform destroy
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.
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID
Jika Anda berencana mempelajari beberapa tutorial dan panduan memulai, menggunakan kembali project dapat help you avoid exceeding project quota limits.