Anda dapat menggunakan Workflows untuk mengeksekusi tugas Cloud Run sebagai bagian dari alur kerja yang melakukan pemrosesan data yang lebih kompleks atau yang mengorkestrasi sistem tugas yang ada.
Tutorial ini menunjukkan cara menggunakan Workflows untuk menjalankan tugas Cloud Run yang memproses data peristiwa yang disimpan di bucket Cloud Storage. Menyimpan payload peristiwa di bucket Cloud Storage memungkinkan Anda mengenkripsi data menggunakan kunci enkripsi yang dikelola pelanggan, yang tidak mungkin dilakukan jika Anda meneruskan data peristiwa sebagai variabel lingkungan ke job Cloud Run.
Diagram berikut memberikan ringkasan tingkat tinggi:
Tujuan
Dalam tutorial ini, Anda akan:
- Buat tugas Cloud Run yang memproses data peristiwa yang disimpan di bucket Cloud Storage.
- Deploy alur kerja yang melakukan hal berikut:
- Menerima peristiwa sebagai argumen.
- Menulis data payload peristiwa ke bucket Cloud Storage.
- Menggunakan konektor Cloud Run Admin API untuk mengeksekusi tugas Cloud Run.
- Buat topik Pub/Sub agar Anda dapat memublikasikan pesan ke topik tersebut. Tutorial ini menggunakan peristiwa Pub/Sub sebagai contoh cara merutekan peristiwa menggunakan Workflows, menyimpan peristiwa ke Cloud Storage sehingga tugas Cloud Run dapat memproses data peristiwa.
- Buat pemicu Eventarc yang menjalankan alur kerja saat pesan ditulis ke topik Pub/Sub.
- Picu alur kerja dengan menulis pesan ke topik Pub/Sub.
Biaya
Dalam dokumen ini, Anda akan menggunakan komponen Google Cloudyang dapat ditagih berikut:
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
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 .
Sebelum memulai tutorial ini, Anda harus mengaktifkan API tertentu dan membuat akun layanan yang dikelola pengguna. Anda harus memberikan peran dan izin yang diperlukan ke akun layanan agar Anda dapat merutekan peristiwa menggunakan pemicu Eventarc dan menjalankan alur kerja.
Perhatikan bahwa jika Anda menggunakan Cloud Shell untuk mencoba tutorial ini, Anda mungkin perlu memberikan peran tambahan ke akun layanan default Compute Engine. Untuk mengetahui detailnya, lihat bagian Buat tugas Cloud Run dalam dokumen ini.
Konsol
- 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.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Cloud Build, Cloud Run, Cloud Storage, Compute Engine, Eventarc, and Workflows APIs.
-
Create a service account:
-
In the Google Cloud console, go to the Create service account page.
Go to Create service account - Select your project.
-
In the Service account name field, enter a name. The Google Cloud console fills in the Service account ID field based on this name.
In the Service account description field, enter a description. For example,
Service account for quickstart
. - Click Create and continue.
-
Grant the following roles to the service account: Cloud Run Admin, Eventarc Event Receiver, Logs Writer, Storage Object Creator, Workflows Invoker.
To grant a role, find the Select a role list, then select the role.
To grant additional roles, click
Add another role and add each additional role. - Click Continue.
-
Click Done to finish creating the service account.
-
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Cloud Build, Cloud Run, Cloud Storage, Compute Engine, Eventarc, and Workflows APIs.
-
Create a service account:
-
In the Google Cloud console, go to the Create service account page.
Go to Create service account - Select your project.
-
In the Service account name field, enter a name. The Google Cloud console fills in the Service account ID field based on this name.
In the Service account description field, enter a description. For example,
Service account for quickstart
. - Click Create and continue.
-
Grant the following roles to the service account: Cloud Run Admin, Eventarc Event Receiver, Logs Writer, Storage Object Creator, Workflows Invoker.
To grant a role, find the Select a role list, then select the role.
To grant additional roles, click
Add another role and add each additional role. - Click Continue.
-
Click Done to finish creating the service account.
-
- Jika Anda mengaktifkan agen layanan Cloud Pub/Sub pada atau sebelum 8 April 2021, untuk mendukung permintaan push Pub/Sub yang diautentikasi, berikan
peran
Service Account Token Creator (
roles/iam.serviceAccountTokenCreator
) kepada agen layanan. Jika tidak, peran ini akan diberikan secara default:- Di konsol Google Cloud , buka halaman
IAM.
- Centang kotak Include Google-provided role grants.
- Di kolom Name, temukan Cloud Pub/Sub Service Account lalu klik Edit principal di baris yang sesuai.
- Klik Tambahkan peran atau Tambahkan peran lain.
- Di daftar Select a role, filter untuk Service Account Token Creator, lalu pilih peran.
- Klik Simpan.
- Di konsol Google Cloud , buka halaman
IAM.
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Cloud Shell mendukung langkah-langkah command line dalam tutorial ini.
- 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.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Cloud Build, Cloud Run, Cloud Storage, Compute Engine, Eventarc, and Workflows APIs.
-
Create a service account:
-
In the Google Cloud console, go to the Create service account page.
Go to Create service account - Select your project.
-
In the Service account name field, enter a name. The Google Cloud console fills in the Service account ID field based on this name.
In the Service account description field, enter a description. For example,
Service account for quickstart
. - Click Create and continue.
-
Grant the following roles to the service account: roles/eventarc.eventReceiver, roles/logging.logWriter, roles/run.admin, roles/storage.objectCreator, roles/workflows.invoker .
To grant a role, find the Select a role list, then select the role.
To grant additional roles, click
Add another role and add each additional role. - Click Continue.
-
Click Done to finish creating the service account.
-
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Cloud Build, Cloud Run, Cloud Storage, Compute Engine, Eventarc, and Workflows APIs.
-
Create a service account:
-
In the Google Cloud console, go to the Create service account page.
Go to Create service account - Select your project.
-
In the Service account name field, enter a name. The Google Cloud console fills in the Service account ID field based on this name.
In the Service account description field, enter a description. For example,
Service account for quickstart
. - Click Create and continue.
-
Grant the following roles to the service account: roles/eventarc.eventReceiver, roles/logging.logWriter, roles/run.admin, roles/storage.objectCreator, roles/workflows.invoker .
To grant a role, find the Select a role list, then select the role.
To grant additional roles, click
Add another role and add each additional role. - Click Continue.
-
Click Done to finish creating the service account.
-
- Jika Anda mengaktifkan agen layanan Cloud Pub/Sub pada atau sebelum
8 April 2021, untuk mendukung permintaan push Pub/Sub yang diautentikasi, berikan
peran
Service Account Token Creator (
roles/iam.serviceAccountTokenCreator
) kepada agen layanan. Jika tidak, peran ini akan diberikan secara default:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-pubsub. \ --role=roles/iam.serviceAccountTokenCreator
gcloud
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)'
Membuat tugas Cloud Run
Tutorial ini menggunakan kode contoh yang dapat Anda temukan di GitHub. Skrip deployment membangun image container untuk membuat tugas Cloud Run. Skrip juga membuat bucket Cloud Storage. Tugas Cloud Run membaca data peristiwa yang disimpan di bucket Cloud Storage, lalu mencetak data peristiwa tersebut.
Jika Anda menjalankan skrip deployment di Cloud Shell, dan jika akun layanan default Compute Engine tidak memiliki peran Editor, berikan peran berikut di project ke akun layanan default Compute Engine. (Jika tidak, Anda dapat melewati langkah ini dan melanjutkan dengan meng-clone repositori aplikasi contoh pada langkah berikutnya.)
Berikan peran Penulis Artifact Registry (
roles/artifactregistry.writer
):gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@ \ --role=roles/artifactregistry.writer
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)'
Berikan peran Storage Object User (
roles/storage.objectUser
):gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@ \ --role=roles/storage.objectUser
Beri peran Logging Logs Writer (
roles/logging.logWriter
):gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@ \ --role=roles/logging.logWriter
Dapatkan kode contoh dengan meng-clone repositori aplikasi contoh ke komputer lokal Anda:
git clone https://github.com/GoogleCloudPlatform/workflows-demos.git
Atau, Anda dapat mendownload contoh sebagai file ZIP
Ubah ke direktori yang berisi kode contoh:
cd workflows-demos/cloud-run-jobs-payload-gcs/message-payload-job
Buat tugas Cloud Run dengan menjalankan skrip deployment:
./deploy-job.sh
Skrip ini membuat bucket Cloud Storage dengan nama
message-payload-PROJECT_ID
, dengan
PROJECT_ID
adalah ID project Google Cloud Anda.
Tugas Cloud Run bernama message-payload-job
juga dibuat.
Men-deploy alur kerja yang menjalankan tugas Cloud Run
Tentukan dan deploy alur kerja yang menjalankan tugas Cloud Run yang baru saja Anda buat. Definisi alur kerja terdiri dari serangkaian langkah yang dijelaskan menggunakan sintaksis Workflows.
Alur kerja menerima peristiwa, menyimpan data peristiwa ke bucket Cloud Storage, lalu menjalankan tugas Cloud Run untuk memproses data peristiwa.
Konsol
Di konsol Google Cloud , buka halaman Workflows:
Klik
Buat.Masukkan nama untuk alur kerja baru, seperti
message-payload-workflow
.Pilih region yang sesuai; misalnya,
us-central1
.Di kolom Service account, pilih akun layanan yang Anda buat sebelumnya.
Akun layanan berfungsi sebagai identitas alur kerja. Anda seharusnya telah memberikan peran berikut ke akun layanan:
- Admin Cloud Run: untuk menjalankan tugas Cloud Run
- Logs Writer: untuk menulis entri log
- Storage Object Creator: untuk membuat objek di Cloud Storage
Klik Berikutnya.
Dalam editor alur kerja, masukkan definisi berikut untuk alur kerja Anda:
Klik Deploy.
gcloud
Buat file kode sumber untuk alur kerja Anda:
touch message-payload-workflow.yaml
Salin definisi alur kerja berikut ke
message-payload-workflow.yaml
:Deploy alur kerja dengan memasukkan perintah berikut:
gcloud workflows deploy message-payload-workflow \ --location=us-central1 \ --source=message-payload-workflow.yaml \ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.
Ganti kode berikut:
SERVICE_ACCOUNT_NAME
: nama akun layanan yang Anda buat sebelumnyaPROJECT_ID
: ID Google Cloud project Anda
Akun layanan berfungsi sebagai identitas alur kerja. Anda seharusnya telah memberikan peran berikut ke akun layanan:
roles/logging.logWriter
: untuk menulis entri logroles/run.admin
: untuk menjalankan tugas Cloud Runroles/storage.objectCreator
: untuk membuat objek di Cloud Storage
Alur kerja ini akan melakukan hal berikut:
init
—Menerima peristiwa sebagai argumen dan menetapkan variabel yang diperlukan.Langkah
log_event
—Membuat entri log di Cloud Logging menggunakan fungsi, sys.log.Langkah
write_payload_to_gcs
—Membuat permintaan HTTPPOST
dan menulis data payload peristiwa ke file bucket Cloud Storage.langkah
run_job_to_process_payload
—Menggunakan metode konektor Cloud Run Admin API,googleapis.run.v1.namespaces.jobs.run
, untuk mengeksekusi tugas. Bucket Cloud Storage dan nama file data diteruskan sebagai variabel penggantian dari alur kerja ke tugas.Langkah
finish
—Menampilkan informasi tentang eksekusi tugas sebagai hasil alur kerja.
Membuat topik Pub/Sub
Buat topik Pub/Sub agar Anda dapat memublikasikan pesan ke topik tersebut. Peristiwa Pub/Sub digunakan untuk mendemonstrasikan cara merutekan peristiwa menggunakan Workflows dan menyimpan peristiwa ke Cloud Storage sehingga tugas Cloud Run dapat memproses data peristiwa.
Konsol
Di konsol Google Cloud , buka halaman Topics.
Klik
CREATE TOPIC.Di kolom ID Topik, masukkan ID untuk topik, seperti
message-payload-topic
.Tetapkan opsi Tambahkan langganan default.
Jangan pilih opsi lainnya.
Klik Buat.
gcloud
Untuk membuat topik dengan ID message-payload-topic
, jalankan perintah
gcloud pubsub topics create
:
gcloud pubsub topics create message-payload-topic
Membuat pemicu Eventarc untuk merutekan peristiwa ke alur kerja
Untuk menjalankan alur kerja dan tugas Cloud Run secara otomatis, buat pemicu Eventarc yang merespons peristiwa Pub/Sub, dan yang merutekan peristiwa ke alur kerja. Setiap kali pesan ditulis ke topik Pub/Sub, peristiwa memicu eksekusi alur kerja.
Konsol
Di konsol Google Cloud , buka halaman Workflows:
Klik nama alur kerja Anda, seperti
message-payload-workflow
.Di halaman Detail alur kerja, klik
Edit.Di halaman Edit alur kerja, di bagian Pemicu, klik Tambahkan pemicu baru > Eventarc.
Panel Pemicu Eventarc akan terbuka.
Di kolom Nama pemicu, masukkan nama untuk pemicu, seperti
message-payload-trigger
.Dari daftar Event provider, pilih Cloud Pub/Sub.
Dari daftar Peristiwa, pilih google.cloud.pubsub.topic.v1.messagePublished.
Dari daftar Select a Cloud Pub/Sub topic, pilih topik Pub/Sub yang sebelumnya Anda buat.
Di kolom Service account, pilih akun layanan yang Anda buat sebelumnya.
Akun layanan berfungsi sebagai identitas pemicu. Anda seharusnya telah memberikan peran berikut ke akun layanan:
- Eventarc Event Receiver: untuk menerima peristiwa
- Workflows Invoker: untuk menjalankan alur kerja
Klik Save trigger.
Pemicu Eventarc kini muncul di bagian Pemicu di halaman Edit alur kerja.
Klik Berikutnya.
Klik Deploy.
gcloud
Buat pemicu Eventarc dengan menjalankan perintah berikut:
gcloud eventarc triggers create message-payload-trigger \ --location=us-central1 \ --destination-workflow=message-payload-workflow \ --destination-workflow-location=us-central1 \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --transport-topic=projects/PROJECT_ID/topics/message-payload-topic \ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.
Ganti kode berikut:
PROJECT_ID
: ID Google Cloud project AndaSERVICE_ACCOUNT_NAME
: nama akun layanan yang Anda buat sebelumnya.
Akun layanan berfungsi sebagai identitas pemicu. Anda seharusnya telah memberikan peran berikut ke akun layanan:
roles/eventarc.eventReceiver
: untuk menerima peristiwaroles/workflows.invoker
: untuk menjalankan alur kerja
Memicu alur kerja
Uji sistem end-to-end dengan memublikasikan pesan ke topik Pub/Sub dan membuat peristiwa. Untuk mengetahui informasi selengkapnya, lihat memicu alur kerja dengan peristiwa atau pesan Pub/Sub.
Publikasikan pesan ke topik Pub/Sub untuk membuat peristiwa:
gcloud pubsub topics publish message-payload-topic --message="Hello World"
Peristiwa dirutekan ke alur kerja yang mencatat pesan peristiwa, menyimpan data peristiwa ke bucket Cloud Storage, dan menjalankan tugas Cloud Run untuk memproses data yang disimpan di Cloud Storage. Proses ini dapat memakan waktu satu menit.
Pastikan tugas Cloud Run berjalan seperti yang diharapkan dengan melihat eksekusi tugas:
gcloud run jobs executions list --job=message-payload-job
Anda akan melihat eksekusi tugas baru di output.
Untuk melihat entri log terkait peristiwa yang dibuat dengan memicu alur kerja, jalankan perintah berikut:
gcloud logging read "resource.type=cloud_run_job AND textPayload:Payload"
Cari entri log yang mirip dengan:
textPayload: "Payload: {'message': {'data': 'SGVsbG8gV29ybGQ=', 'messageId': '8834108235224238',\ \ 'publishTime': '2023-09-20T17:07:52.921Z'}, 'subscription': 'projects/MY_PROJECT/subscriptions/eventarc-us-central1-message-payload-trigger-sub-741'}" ... resource: labels: job_name: message-payload-job location: us-central1 project_id: MY_PROJECT type: cloud_run_job textPayload: Processing message payload gs://message-payload-MY_PROJECT/8254002311197919.data.json
Anda dapat mengonfirmasi bahwa hasilnya sesuai yang diharapkan dengan melihat data peristiwa di objek bucket Cloud Storage.
Ambil nama bucket Anda:
gcloud storage ls
Outputnya mirip dengan hal berikut ini:
gs://message-payload-PROJECT_ID/
Mencantumkan objek di bucket Anda:
gcloud storage ls gs://message-payload-PROJECT_ID/** --recursive
Outputnya akan mirip dengan berikut ini:
gs://message-payload-PROJECT_ID/OBJECT_ID.data.json
Catat
OBJECT_ID
untuk digunakan di langkah berikutnya.Download objek di bucket Anda sebagai file:
gcloud storage cp gs://message-payload-PROJECT_ID/OBJECT_ID.data.json message-event.txt
Ganti
OBJECT_ID
dengan ID yang ditampilkan pada langkah sebelumnya.Di editor teks, buka file
message-event.txt
. Isi peristiwa yang ditulis ke file akan mirip dengan berikut ini:{ "message": { "data": "SGVsbG8gV29ybGQ=", "messageId": "8254002311197919", "publishTime": "2023-09-20T16:54:29.312Z" }, "subscription": "projects/MY_PROJECT/subscriptions/eventarc-us-central1-message-payload-trigger-sub-741" }
Perhatikan bahwa jika Anda mendekode nilai data
SGVsbG8gV29ybGQ=
dari format Base64-nya, "Hello World" akan ditampilkan.
Pembersihan
Jika Anda membuat project baru untuk tutorial ini, hapus project tersebut. Jika Anda menggunakan project yang ada dan ingin mempertahankannya tanpa perubahan yang ditambahkan dalam tutorial ini, hapus resource yang dibuat untuk tutorial.
Menghapus project
Cara termudah untuk menghilangkan penagihan adalah dengan menghapus project yang Anda buat untuk tutorial.
Untuk menghapus project:
- 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.
Menghapus resource tutorial
Hapus resource yang Anda buat dalam tutorial ini:
Langkah berikutnya
Kecuali dinyatakan lain, konten di halaman ini dilisensikan berdasarkan Lisensi Creative Commons Attribution 4.0, sedangkan contoh kode dilisensikan berdasarkan Lisensi Apache 2.0. Untuk mengetahui informasi selengkapnya, lihat Kebijakan Situs Google Developers. Java adalah merek dagang terdaftar dari Oracle dan/atau afiliasinya.
Terakhir diperbarui pada 2025-08-18 UTC.