Tutorial ini menunjukkan cara menggunakan Cloud Scheduler untuk menjalankan Alur kerja secara otomatis sehingga alur kerja berjalan pada jadwal tertentu, dalam hal ini setiap 5 menit.
Tujuan
- Buat dan deploy alur kerja yang dapat menerima argumen runtime.
- Buat tugas Cloud Scheduler yang memicu alur kerja Anda dan menjalankannya setiap 5 menit, dengan meneruskan argumen JSON dalam format yang benar.
Biaya
Dalam dokumen ini, Anda menggunakan komponen Google Cloud yang dapat ditagih berikut:
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Sebelum memulai
- Siapkan lingkungan Anda untuk Cloud Scheduler, termasuk membuat aplikasi App Engine.
-
Aktifkan API Workflows.
- Setel lokasi default yang digunakan dalam tutorial ini:
gcloud config set workflows/location REGION
GantiREGION
dengan lokasi Workflows yang didukung pilihan Anda. - Buat akun layanan untuk digunakan oleh Workflows; misalnya,
sa-name
.gcloud iam service-accounts create sa-name
- Beri akun layanan Anda peran
workflows.invoker
agar akun tersebut memiliki izin untuk memicu alur kerja Anda:gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:sa-name@PROJECT_ID.iam.gserviceaccount.com" \ --role "roles/workflows.invoker"
Ganti - Berikan peran
logging.logWriter
ke akun layanan.gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:sa-name@PROJECT_ID.iam.gserviceaccount.com" \ --role "roles/logging.logWriter"
PROJECT_ID
dengan ID project Google Cloud Anda.
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 Create.
Masukkan
myFirstWorkflow
sebagai nama untuk alur kerja baru Anda.Pilih us-central1 untuk region tersebut.
Pilih akun layanan yang Anda buat sebelumnya.
Klik Next.
Di 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 salam "Halo" kepada pengguna yang nama depan dan 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 salam "Halo" kepada pengguna yang nama depan dan 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_json
denganyaml
ataujson
, 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:
*/5 * * * *
Untuk Zona Waktu, pilih negara dan zona waktu.
Misalnya, pilih Amerika Serikat dan Los Angeles atau Waktu Musim Panas Pasifik (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 HTTP method tetap menggunakan nilai default POST.
Tambahkan dua header HTTP berikut:
- Name:
Content-Type
dan Value:application/octet-stream
- Name:
User-Agent
dan Value:Google-Cloud-Scheduler
- Name:
Untuk Isi, masukkan:
{"argument": "{\"firstName\":\"Sherlock\", \"lastName\":\"Holmes\"}"}
Ini akan meneruskan encoding JSON 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 Auth header, pilih Add OAuth token.
Masukkan akun layanan yang telah Anda buat sebelumnya.
sa-name@PROJECT_ID.iam.gserviceaccount.com
Anda tidak perlu menentukan Cakupan karena defaulthttps://www.googleapis.com/auth/cloud-platform
digunakan.Terima semua setelan default lainnya dan 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 akan di-escape
menggunakan garis miring terbalik (\).
Alur kerja Anda sekarang dijalankan setiap 5 menit.
Untuk mengetahui informasi selengkapnya tentang tanda gcloud scheduler
, serta cara menerapkan
logging panggilan sehingga setiap langkah panggilan selama eksekusi alur kerja Anda
dicatat ke dalam log, lihat Menjadwalkan alur kerja dan
referensi gcloud
.
Menjalankan tugas dan memverifikasi hasilnya
Konsol
Di konsol Google Cloud, buka halaman Cloud Scheduler:
Jika lowongan tidak ditampilkan, Anda mungkin perlu memuat ulang halaman.
Untuk tugas bernama
my-workflow-job
, klik Jalankan sekarang.Anda akan melihat nilai Result diperbarui menjadi Success.
Di konsol Google Cloud, buka halaman Workflows:
Dari daftar alur kerja, klik myFirstWorkflow untuk membuka halaman detailnya.
Status eksekusi alur kerja Anda seharusnya Berhasil.
Klik ID eksekusi alur kerja untuk membuka halaman detail dan melihat hasil alur kerja di panel Output.
Output-nya akan berupa "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-nya akan terlihat seperti berikut dengan ID eksekusi yang dicetak 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_ID
dengan ID eksekusi yang ditampilkan di 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 otomatis menjalankan alur kerja pada jadwal tertentu.
Pembersihan
Setelah menyelesaikan tutorial, Anda dapat membersihkan resource yang dibuat agar resource tersebut berhenti menggunakan kuota dan dikenai biaya. Bagian berikut menjelaskan cara menghapus atau menonaktifkan resource ini.
Menghapus project
Cara termudah untuk menghilangkan penagihan adalah dengan menghapus project yang Anda buat untuk tutorial.
Untuk menghapus project:
- Di konsol Google Cloud, buka halaman Manage resource.
- Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
- Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.
Menghapus tugas Cloud Scheduler
Buka halaman Cloud Scheduler di konsol Google Cloud.
Pilih kotak centang di samping tugas Anda.
Klik Hapus di bagian atas halaman dan konfirmasi penghapusan.
Menghapus alur kerja Workflows
Buka halaman Workflows di Konsol Google Cloud.
Pilih alur kerja Anda.
Klik Hapus di bagian atas halaman; ketik nama alur kerja Anda, lalu konfirmasi penghapusan.
Menonaktifkan aplikasi App Engine
Dengan menonaktifkan aplikasi App Engine, aplikasi Anda akan berhenti menjalankan instance dan menyalurkan permintaan, tetapi tetap mempertahankan data dan setelan aplikasi.
Buka halaman Setelan aplikasi di Konsol Google Cloud.
Klik Disable application.
Ikuti petunjuknya.
Langkah selanjutnya
- Pelajari Alur kerja lebih lanjut.