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.
Tujuan
- Membuat dan men-deploy alur kerja yang dapat menerima argumen runtime.
- Membuat 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 akan menggunakan komponen yang dapat ditagih berikut Google Cloud:
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 Workflows API.
Peran yang diperlukan untuk mengaktifkan API
Untuk mengaktifkan API, Anda memerlukan izin
serviceusage.services.enable. Jika Anda membuat project, kemungkinan Anda sudah memiliki izin ini melalui peran Pemilik (roles/owner). Jika tidak, Anda bisa mendapatkan izin ini melalui peran Admin Service Usage (roles/serviceusage.serviceUsageAdmin). Pelajari cara memberikan peran.- Setel lokasi default yang digunakan dalam tutorial ini:
Gantigcloud config set workflows/location REGION
REGIONdengan lokasi Workflows yang didukung pilihan Anda. - Buat akun layanan untuk Workflows yang akan digunakan; misalnya,
sa-name.gcloud iam service-accounts create sa-name
- Berikan peran
workflows.invokerke akun layanan Anda 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.logWriterke 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 Google Cloud project IDAnda.
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 Google Cloud konsol, buka halaman Workflows:
Klik Create.
Masukkan
myFirstWorkflowsebagai nama untuk alur kerja baru Anda.Pilih us-east1 untuk region.
Pilih akun layanan yang Anda buat sebelumnya.
Klik Next.
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 salam "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 salam "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 \ --location=us-east1 \ --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 Google Cloud konsol, buka halaman Cloud Scheduler:
Klik Create Job.
Tetapkan Name ke
my-workflow-job.Untuk Region, pilih us-east1 (South Carolina).
Untuk Frequency, masukkan:
Tindakan ini akan menjalankan tugas setiap 5 menit. Interval ditentukan menggunakan unix-cron format.*/5 * * * *Untuk Timezone, pilih negara dan zona waktu.
Misalnya, pilih Amerika Serikat dan Los Angeles atau Pacific Daylight Time (PDT).
Klik Continue.
Untuk Target type, pilih HTTP.
Untuk URL, masukkan:
https://workflowexecutions.googleapis.com/v1/projects/PROJECT_ID/locations/us-east1/workflows/myFirstWorkflow/executions
Biarkan HTTP method pada default POST.
Tambahkan dua HTTP headers berikut:
- Name:
Content-Typedan Value:application/octet-stream - Name:
User-Agentdan Value:Google-Cloud-Scheduler
- Name:
Untuk Body, masukkan:
{"argument": "{\"firstName\":\"Sherlock\", \"lastName\":\"Holmes\"}"}Tindakan ini akan 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 Auth header, pilih Add OAuth token.
Masukkan akun layanan yang Anda buat sebelumnya.
Anda tidak perlu menentukan Scope karena defaultsa-name@PROJECT_ID.iam.gserviceaccount.com
https://www.googleapis.com/auth/cloud-platformdigunakan.Terima semua default lainnya, lalu klik Create.
gcloud
Jadwalkan tugas bernama my-workflow-job dengan memasukkan perintah berikut:
gcloud scheduler jobs create http my-workflow-job \
--location="us-east1" \
--schedule="*/5 * * * *" \
--uri="https://workflowexecutions.googleapis.com/v1/projects/PROJECT_ID/locations/us-east1/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 kini dijalankan setiap 5 menit.
Untuk mengetahui informasi selengkapnya tentang flag gcloud scheduler, serta cara menerapkan
logging panggilan sehingga setiap langkah panggilan selama eksekusi alur kerja Anda
dicatat, lihat Menjadwalkan alur kerja dan
gcloud referensi.
Menjalankan tugas dan memverifikasi hasilnya
Konsol
Di Google Cloud konsol, buka halaman Cloud Scheduler:
Jika tugas tidak ditampilkan, Anda mungkin harus memuat ulang halaman.
Untuk tugas bernama
my-workflow-job, klik Run now.Anda akan melihat nilai Result diperbarui menjadi Success.
Di Google Cloud konsol, 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.
Output-nya akan berupa "Hello, Sherlock Holmes!".
gcloud
Jalankan tugas Cloud Scheduler untuk menjalankan alur kerja:
gcloud scheduler jobs run my-workflow-job --location="us-east1"
Ambil ID eksekusi untuk alur kerja Anda:
gcloud workflows executions list myFirstWorkflow
Output-nya akan terlihat seperti berikut dengan ID eksekusi dalam huruf tebal:
projects/316710615161/locations/us-east1/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-nya akan terlihat seperti berikut:
argument: '{"firstName":"Sherlock","lastName":"Holmes"}' endTime: '2021-09-09T15:15:00.869350639Z' name: projects/316710615161/locations/us-east1/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 sesuai jadwal tertentu.
Pembersihan
Setelah menyelesaikan tutorial, Anda dapat membersihkan resource yang dibuat agar tidak lagi menggunakan kuota dan menimbulkan tagihan. 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 Google Cloud konsol, buka halaman Manage resources.
- Pada daftar project, pilih project yang Anda 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 Google Cloud konsol.
Centang kotak di samping tugas Anda.
Klik Delete di bagian atas halaman dan konfirmasi penghapusan Anda.
Menghapus alur kerja Workflows
Buka halaman Workflows di Google Cloud konsol.
Pilih alur kerja Anda.
Klik Delete di bagian atas halaman; ketik nama alur kerja Anda, lalu konfirmasi penghapusan Anda.
Menonaktifkan aplikasi App Engine
Menonaktifkan aplikasi App Engine akan menghentikan aplikasi Anda menjalankan instance dan melayani permintaan sambil mempertahankan data dan setelan aplikasi.
Buka halaman Application settings di Google Cloud konsol.
Klik Disable application.
Ikuti petunjuknya.
Langkah berikutnya
- Pelajari Workflows lebih lanjut.