Tutorial ini menunjukkan cara menggunakan Cloud Scheduler untuk menjalankan Workflows secara otomatis sehingga alur kerja berjalan sesuai jadwal tertentu, dalam hal ini setiap 5 menit.
Membuat alur kerja yang menerima argumen runtime
Definisi alur kerja terdiri dari serangkaian langkah yang dijelaskan menggunakan sintaksis workflows, yang dapat ditulis dalam format YAML atau JSON. Setelah membuat alur kerja, Anda men-deploy alur kerja tersebut agar tersedia untuk dieksekusi.
Konsol
Di konsol Google Cloud , buka halaman Workflows:
Klik Buat.
Masukkan
myFirstWorkflowsebagai nama untuk alur kerja baru Anda.Pilih us-central1 untuk region.
Pilih akun layanan yang Anda buat sebelumnya.
Klik Berikutnya.
Dalam editor alur kerja, masukkan definisi berikut untuk alur kerja Anda.
YAML
main: params: [args] steps: - step1: assign: - outputVar: ${"Hello, " + args.firstName + " " + args.lastName + "!"} - step2: return: ${outputVar}
JSON
{ "main": { "params": [ "args" ], "steps": [ { "step1": { "assign": [ { "outputVar": "${\"Hello \" + args.firstName + \" \" + args.lastName}" } ] } }, { "step2": { "return": "${outputVar}" } } ] } }
Alur kerja ini menampilkan ucapan "Halo" kepada seseorang yang nama depan dan nama belakangnya Anda teruskan sebagai argumen runtime.
Klik Deploy.
gcloud
- Buka terminal.
Simpan definisi alur kerja berikut sebagai file YAML atau JSON, seperti myFirstWorkflow.yaml atau myFirstWorkflow.json.
YAML
main: params: [args] steps: - step1: assign: - outputVar: ${"Hello, " + args.firstName + " " + args.lastName + "!"} - step2: return: ${outputVar}
JSON
{ "main": { "params": [ "args" ], "steps": [ { "step1": { "assign": [ { "outputVar": "${\"Hello \" + args.firstName + \" \" + args.lastName}" } ] } }, { "step2": { "return": "${outputVar}" } } ] } }
Alur kerja ini menampilkan ucapan "Halo" kepada seseorang yang nama depan dan nama belakangnya Anda teruskan sebagai argumen runtime.
Deploy alur kerja dengan memasukkan perintah berikut:
gcloud workflows deploy myFirstWorkflow \ --source=myFirstWorkflow.yaml_OR_json \ --service-account=sa-name@PROJECT_ID.iam.gserviceaccount.com
Ganti
yaml_OR_jsondenganyamlataujson, bergantung pada format file definisi Workflows yang Anda buat sebelumnya.
Menjadwalkan alur kerja
Buat tugas Cloud Scheduler yang memicu alur kerja Anda, menggunakan akun layanan yang Anda buat sebelumnya.
Konsol
Di konsol Google Cloud , buka halaman Cloud Scheduler:
Klik Create Job.
Tetapkan Name ke
my-workflow-job.Untuk Frekuensi, masukkan:
Tindakan ini akan menjalankan tugas setiap 5 menit. Interval ditentukan menggunakan format unix-cron.*/5 * * * *Untuk Zona waktu, pilih negara dan zona waktu.
Misalnya, pilih Amerika Serikat dan Los Angeles atau Pacific Daylight Time (PDT).
Klik Lanjutkan.
Untuk Target type, pilih HTTP.
Untuk URL, masukkan:
https://workflowexecutions.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/workflows/myFirstWorkflow/executions
Biarkan metode HTTP pada default POST.
Tambahkan dua header HTTP berikut:
- Nama:
Content-Typedan Nilai:application/octet-stream - Nama:
User-Agentdan Nilai:Google-Cloud-Scheduler
- Nama:
Untuk Body, masukkan:
{"argument": "{\"firstName\":\"Sherlock\", \"lastName\":\"Holmes\"}"}Tindakan ini meneruskan encoding JSON dari argumen alur kerja; dalam hal ini, nama depan, "Sherlock", dan nama belakang, "Holmes". Tanda kutip ganda di dalam string di-escape menggunakan garis miring terbalik (\).
Untuk header Auth, pilih Tambahkan token OAuth.
Masukkan akun layanan yang Anda buat sebelumnya.
Anda tidak perlu menentukan Cakupan karenasa-name@PROJECT_ID.iam.gserviceaccount.com
https://www.googleapis.com/auth/cloud-platformdefault akan digunakan.Setujui semua setelan default lainnya, lalu klik Create.
gcloud
Jadwalkan tugas bernama my-workflow-job dengan memasukkan perintah berikut:
gcloud scheduler jobs create http my-workflow-job \
--schedule="*/5 * * * *" \
--uri="https://workflowexecutions.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/workflows/myFirstWorkflow/executions" \
--message-body="{\"argument\": \"{\\\"firstName\\\":\\\"Sherlock\\\", \\\"lastName\\\":\\\"Holmes\\\"}\"}" \
--time-zone="America/Los_Angeles" \
--oauth-service-account-email="sa-name@PROJECT_ID.iam.gserviceaccount.com"Interval ditentukan menggunakan format unix-cron.
Flag message-body digunakan untuk meneruskan encoding JSON dari argumen alur kerja; dalam hal ini, nama depan, "Sherlock", dan nama belakang, "Holmes". Tanda kutip ganda di dalam string di-escape
menggunakan garis miring terbalik (\).
Alur kerja Anda sekarang dieksekusi setiap 5 menit.
Untuk mengetahui informasi selengkapnya tentang tanda gcloud scheduler, serta cara menerapkan
pencatatan panggilan sehingga setiap langkah panggilan selama eksekusi alur kerja Anda
dicatat, lihat Menjadwalkan alur kerja dan
gcloud referensi.
Jalankan tugas dan verifikasi hasilnya
Konsol
Di konsol Google Cloud , buka halaman Cloud Scheduler:
Jika tugas tidak ditampilkan, Anda mungkin harus memuat ulang halaman.
Untuk tugas yang bernama
my-workflow-job, klik Jalankan sekarang.Anda akan melihat nilai Result berubah menjadi Success.
Di konsol Google Cloud , buka halaman Workflows:
Dari daftar alur kerja, klik myFirstWorkflow untuk membuka halaman detailnya.
Status eksekusi alur kerja Anda harus Succeeded.
Klik ID eksekusi alur kerja untuk membuka halaman detail dan melihat hasil alur kerja di panel Output.
Outputnya harus "Hello, Sherlock Holmes!".
gcloud
Jalankan tugas Cloud Scheduler untuk menjalankan alur kerja:
gcloud scheduler jobs run my-workflow-job
Ambil ID eksekusi untuk alur kerja Anda:
gcloud workflows executions list myFirstWorkflow
Output akan terlihat seperti berikut dengan ID eksekusi dalam huruf tebal:
projects/316710615161/locations/us-central1/workflows/myFirstWorkflow/executions/138b31e1-f3bb-4ba7-a6da-008d0cb4a320
Ambil hasil eksekusi alur kerja:
gcloud workflows executions describe EXECUTION_ID --workflow myFirstWorkflow
Ganti
EXECUTION_IDdengan ID eksekusi yang ditampilkan pada langkah sebelumnya.Output akan terlihat seperti berikut:
argument: '{"firstName":"Sherlock","lastName":"Holmes"}' endTime: '2021-09-09T15:15:00.869350639Z' name: projects/316710615161/locations/us-central1/workflows/myFirstWorkflow/executions/138b31e1-f3bb-4ba7-a6da-008d0cb4a320 result: '"Hello, Sherlock Holmes!"' startTime: '2021-09-09T15:15:00.839175480Z' state: SUCCEEDED workflowRevisionId: 000001-4f9
Selamat! Anda telah berhasil membuat tugas Cloud Scheduler yang menjalankan alur kerja secara otomatis sesuai jadwal tertentu.