Mengantrekan eksekusi alur kerja menggunakan Cloud Tasks

Anda dapat menggunakan Cloud Tasks untuk mengantrekan alur kerja dan menjalankannya secara asinkron.

Cloud Tasks menawarkan kontrol berikut:

  • Menjadwalkan waktu pengiriman tertentu
  • Mengelola rasio pengiriman
  • Mengonfigurasi perilaku percobaan ulang
  • Mengakses dan mengelola tugas individual dalam antrean
  • Mengaktifkan penghapusan duplikat tugas

Kontrol ini dapat berguna, misalnya, untuk mengelola permintaan yang memicu alur kerja dan yang dapat melebihi batas Workflows secara tidak terduga. Dengan mengonfigurasi antrean Cloud Tasks dengan batas kapasitas dan percobaan ulang, Anda dapat memastikan bahwa semua permintaan tersebut menghasilkan eksekusi alur kerja.

Untuk mengetahui informasi selengkapnya, lihat Memahami Cloud Tasks.

Perhatikan hal berikut:

  • Anda harus mendasarkan batas kapasitas pada batas Workflows untuk permintaan tulis Execution API. Jika perlu, Anda dapat meminta penyesuaian pada sebagian besar kuota di Google Cloud konsol. Pelajari penyesuaian kuota lebih lanjut .

  • Cloud Tasks dirancang untuk memberikan pengiriman "setidaknya sekali"; namun, Workflows tidak memastikan pemrosesan permintaan duplikat dari Cloud Tasks tepat satu kali.

  • Anda dapat menghapus penundaan eksekusi dan memaksimalkan throughput dengan mengaktifkan backlog eksekusi di Workflows. Eksekusi yang di-backlog akan otomatis berjalan segera setelah kuota konkurensi eksekusi tersedia. Untuk mengetahui informasi selengkapnya, lihat Mengelola backlog eksekusi.

Sebelum memulai

  1. Jika Anda belum memiliki alur kerja yang ingin diantrekan, buatlah.
  2. Aktifkan Cloud Tasks 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 Penggunaan Layanan (roles/serviceusage.serviceUsageAdmin). Pelajari cara memberikan peran.

    Mengaktifkan API

Mengantrekan tugas untuk menjalankan alur kerja

  1. Buat akun layanan agar Cloud Tasks dapat membuat permintaan ke Workflows API:

    gcloud iam service-accounts create SERVICE_ACCOUNT_NAME

    Ganti SERVICE_ACCOUNT_NAME dengan nama yang terdiri dari 6 hingga 30 karakter. Nama tersebut dapat berisi karakter alfanumerik huruf kecil dan tanda hubung. Setelah membuat akun layanan, Anda tidak dapat mengubah namanya.

  2. Untuk mengizinkan akun utama yang akan menjalankan perintah Cloud Tasks Anda bertindak sebagai akun layanan Identity and Access Management (IAM), berikan peran yang memungkinkan akun utama meniru akun layanan.

  3. Berikan peran workflows.invoker ke akun layanan baru Anda agar akun tersebut memiliki izin untuk memicu alur kerja Anda:

    gcloud projects add-iam-policy-binding PROJECT_NAME \
        --member serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_NAME.iam.gserviceaccount.com \
        --role roles/workflows.invoker

    Ganti kode berikut:

    • PROJECT_NAME: nama Google Cloud project Anda.
    • SERVICE_ACCOUNT_NAME: nama akun layanan yang Anda buat sebelumnya.
  4. Jika Anda belum memiliki antrean Cloud Tasks, buatlah.

  5. Buat tugas yang menargetkan endpoint HTTP alur kerja Anda, menggunakan akun layanan yang Anda buat sebelumnya untuk melakukan autentikasi:

    gcloud tasks create-http-task \
        --queue="QUEUE_ID" \
        --url="https://workflowexecutions.googleapis.com/v1/projects/PROJECT_NAME/locations/REGION_NAME/workflows/WORKFLOW_NAME/executions" \
        --body-content="{\"argument\": \"DOUBLE_ESCAPED_JSON_STRING\"}" \
        --oauth-service-account-email="SERVICE_ACCOUNT_NAME@PROJECT_NAME.iam.gserviceaccount.com"

    Ganti kode berikut:

    • QUEUE_ID: ID yang Anda tetapkan ke antrean Cloud Tasks; misalnya, my-queue.
    • PROJECT_NAME: nama project Anda. Google Cloud
    • REGION_NAME: region tempat alur kerja Anda berada, seperti us-central1.
    • WORKFLOW_NAME: nama alur kerja yang ingin Anda buat tugasnya.
    • DOUBLE_ESCAPED_JSON_STRING: encoding JSON dari argumen apa pun yang Anda teruskan. Tanda kutip ganda di dalam string yang dikutip di-escape menggunakan garis miring terbalik (\). Contoh: --body-content="{\"argument\": \"{\\\"foo\\\": \\\"bar\\\"}\"}"
    • SERVICE_ACCOUNT_NAME: nama akun layanan yang Anda buat sebelumnya.

    Tugas Anda dibuat dan ditambahkan ke antrean Cloud Tasks. Tugas akan tetap berada dalam antrean hingga eksekusi alur kerja dimulai dan menampilkan kode status HTTP 2xx, yang menunjukkan bahwa Cloud Tasks menganggap tugas tersebut selesai.

Langkah berikutnya