Menjadwalkan Alur Kerja


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

  1. Buat dan deploy alur kerja yang dapat menerima argumen runtime.
  2. 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 akan menggunakan komponen Google Cloudyang dapat ditagih berikut:

Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda, gunakan kalkulator harga.

Pengguna Google Cloud baru mungkin memenuhi syarat untuk mendapatkan uji coba gratis.

Sebelum memulai

  1. Siapkan lingkungan untuk Cloud Scheduler, termasuk membuat aplikasi App Engine.
  2. Enable the Workflows API.

    Enable the API

  3. Setel lokasi default yang digunakan dalam tutorial ini:
      gcloud config set workflows/location REGION
    Ganti REGION dengan lokasi Workflows yang didukung pilihan Anda.
  4. Buat akun layanan untuk digunakan Workflows; misalnya, sa-name.
      gcloud iam service-accounts create sa-name
  5. 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"
  6. Ganti PROJECT_ID dengan Google Cloud project ID Anda.
  7. 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"

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

  1. Di konsol Google Cloud , buka halaman Workflows:

    Buka Workflows

  2. Klik Buat.

  3. Masukkan myFirstWorkflow sebagai nama untuk alur kerja baru Anda.

  4. Pilih us-central1 untuk region.

  5. Pilih akun layanan yang Anda buat sebelumnya.

  6. Klik Berikutnya.

  7. 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 orang yang nama depan dan nama belakangnya Anda teruskan sebagai argumen runtime.

  8. Klik Deploy.

gcloud

  1. Buka terminal.
  2. 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 orang yang nama depan dan nama belakangnya Anda teruskan sebagai argumen runtime.

  3. 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 dengan yaml atau json, 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

  1. Di konsol Google Cloud , buka halaman Cloud Scheduler:

    Buka Cloud Scheduler

  2. Klik Create Job.

  3. Tetapkan Name ke my-workflow-job.

  4. Untuk Frekuensi, masukkan:

    */5 * * * *
    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).

  6. Klik Lanjutkan.

  7. Untuk Target type, pilih HTTP.

  8. Untuk URL, masukkan:

    https://workflowexecutions.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/workflows/myFirstWorkflow/executions
    

  9. Biarkan metode HTTP pada default POST.

  10. Tambahkan dua header HTTP berikut:

    • Nama: Content-Type dan Nilai: application/octet-stream
    • Nama: User-Agent dan Nilai: Google-Cloud-Scheduler
  11. 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 (\).

  12. Untuk header Auth, pilih Tambahkan token OAuth.

  13. Masukkan akun layanan yang Anda buat sebelumnya.

    sa-name@PROJECT_ID.iam.gserviceaccount.com
    
    Anda tidak perlu menentukan Cakupan karena https://www.googleapis.com/auth/cloud-platform default akan digunakan.

  14. 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 dijalankan 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

  1. Di konsol Google Cloud , buka halaman Cloud Scheduler:

    Buka Cloud Scheduler

    Jika tugas tidak ditampilkan, Anda mungkin harus memuat ulang halaman.

  2. Untuk tugas yang bernama my-workflow-job, klik Jalankan sekarang.

    Anda akan melihat nilai Result berubah menjadi Success.

  3. Di konsol Google Cloud , buka halaman Workflows:

    Buka Workflows

  4. Dari daftar alur kerja, klik myFirstWorkflow untuk membuka halaman detailnya.

    Status eksekusi alur kerja Anda harus Succeeded.

  5. Klik ID eksekusi alur kerja untuk membuka halaman detail dan melihat hasil alur kerja di panel Output.

    Outputnya harus "Hello, Sherlock Holmes!".

gcloud

  1. Jalankan tugas Cloud Scheduler untuk menjalankan alur kerja:

    gcloud scheduler jobs run my-workflow-job
    
  2. 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
  3. Ambil hasil eksekusi alur kerja:

    gcloud workflows executions describe EXECUTION_ID --workflow myFirstWorkflow

    Ganti EXECUTION_ID dengan 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 otomatis menjalankan alur kerja sesuai 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:

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

Hapus tugas Cloud Scheduler

  1. Buka halaman Cloud Scheduler di konsol Google Cloud .

    Buka Cloud Scheduler

  2. Centang kotak di samping tugas Anda.

  3. Klik Hapus di bagian atas halaman, lalu konfirmasi penghapusan.

Menghapus alur kerja Workflows

  1. Buka halaman Workflows di konsol Google Cloud .

    Buka Workflows

  2. Pilih alur kerja Anda.

  3. Klik Hapus di bagian atas halaman; ketik nama alur kerja Anda, lalu konfirmasi penghapusan.

Menonaktifkan aplikasi App Engine

Menonaktifkan aplikasi App Engine akan menghentikan aplikasi Anda menjalankan instance dan melayani permintaan, sekaligus mempertahankan data dan setelan aplikasi.

  1. Buka halaman Setelan aplikasi di konsol Google Cloud .

    Buka Setelan aplikasi

  2. Klik Disable application.

  3. Ikuti petunjuknya.

Langkah berikutnya