使用 Cloud Scheduler 排定工作流程

本頁面說明如何使用 Cloud Scheduler,按照特定時間表執行工作流程,例如每週一上午 9 點或每 15 分鐘。您可以在 Google Cloud 控制台或使用 Google Cloud CLI 設定時間表。

事前準備

  1. 如果您還沒有要排程的工作流程,請建立並部署一個
  2. Enable the Cloud Scheduler API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  3. 或者,在終端機中輸入下列指令:
    gcloud services enable cloudscheduler.googleapis.com

排定工作流程

  1. 建立服務帳戶,讓 Cloud Scheduler 可以向 Workflows API 發出要求:

    gcloud iam service-accounts create SERVICE_ACCOUNT_NAME

    SERVICE_ACCOUNT_NAME 改為長度介於 6 至 30 個字元的名稱。可使用小寫英數字元和破折號。 建立服務帳戶後,即無法變更名稱。

  2. 如要允許執行 Cloud Scheduler 指令的主體模擬 Identity and Access Management (IAM) 服務帳戶,請授予主體可模擬服務帳戶的角色

  3. workflows.invoker 角色授予新服務帳戶,讓該帳戶有權觸發工作流程:

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

    更改下列內容:

    • PROJECT_ID:您的 Google Cloud 專案 ID。
    • SERVICE_ACCOUNT_NAME:先前建立的服務帳戶名稱。
  4. 使用先前建立的服務帳戶進行驗證,然後建立會觸發工作流程的 Cloud Scheduler 工作。

    請注意,如果您要套用通話記錄,必須透過Google Cloud 控制台的「工作流程」頁面設定通話記錄。詳情請參閱下列步驟。

    控制台

    1. 如要排定工作流程,請前往 Google Cloud 控制台的「Workflows」頁面:

      前往「Workflows」頁面

    2. 在「工作流程」頁面中選取工作流程,前往詳細資料頁面。

    3. 在「Workflow details」(工作流程詳細資料) 頁面中,按一下 「Edit」(編輯)

    4. 在「編輯工作流程」頁面中,依序選取「新增觸發條件」>「Cloud Scheduler」

      「建立排程器工作」窗格隨即開啟。

    5. 定義時間表:

      1. 在「Name」(名稱) 欄位中,輸入 Cloud Scheduler 工作的名稱。不得與同一區域內其他工作的排程名稱重複。

      2. 在「Region」(區域) 清單中,選取適當的區域,例如「us-central1」

      3. 在「頻率」欄位中,以 unix-cron 格式指定您定義的時間間隔。 舉例來說,如要排定工作流程每 5 分鐘執行一次,請輸入 */5 * * * *

      4. 在「Timezone」(時區) 清單中,選取 Cloud Scheduler 應使用的時區,以便解讀您提供的工作排程。你可以依國家/地區搜尋。

    6. 按一下「繼續」

    7. 設定執行作業:

      1. 在「Workflow's argument」(工作流程的引數) 欄位中,指定要傳遞至工作流程的任何執行階段引數,引數必須採用 JSON 格式。例如: {"firstName":"Sherlock", "lastName":"Holmes"}。 如果工作流程未使用執行階段引數,請接受 {} 的預設值,或將欄位留空白。

      2. 在「工作流程的呼叫記錄檔層級」清單中,選取要在工作流程執行期間套用的呼叫記錄層級:

        • 未指定:未指定記錄層級。這是預設值。 執行作業記錄檔層級的優先順序會高於任何工作流程記錄檔層級,除非未指定執行作業記錄檔層級 (預設值),否則適用工作流程記錄檔層級。
        • 僅限錯誤:記錄所有已擷取的例外狀況;或因例外狀況而停止通話時。
        • 所有呼叫:記錄對子工作流程或程式庫函式的所有呼叫,以及呼叫結果。
        • 沒有記錄:不記錄任何通話。
      3. 在「Service account」(服務帳戶) 清單中,選取您先前建立的服務帳戶。

    8. 點選「建立」

      請注意,如果您要更新現有工作流程,需要重新部署工作流程。

      Cloud Scheduler 工作現在會列在「Workflow details」(工作流程詳細資料) 頁面的「Triggers」(觸發條件) 分頁中。

    9. 如要更新或刪除工作,請編輯工作流程:

      1. 在「Workflow details」(工作流程詳細資料) 頁面中,按一下 「Edit」(編輯)
      2. 在「觸發條件」部分中,找出要更新或刪除的工作。
      3. 按一下「編輯資源」或「刪除資源」

    gcloud

    1. 開啟終端機並輸入下列指令:

      gcloud scheduler jobs create http JOB_NAME \
          --schedule="FREQUENCY" \
          --uri="https://workflowexecutions.googleapis.com/v1/projects/PROJECT_ID/locations/REGION_NAME/workflows/WORKFLOW_NAME/executions" \
          --message-body="{\"argument\": \"DOUBLE_ESCAPED_JSON_STRING\"}" \
          --time-zone="TIME_ZONE" \
          --oauth-service-account-email="SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com"

      更改下列內容:

      • JOB_NAME:您要為 Cloud Scheduler 工作指定的名稱。
      • FREQUENCY:您使用 unix-cron 格式定義的時間間隔。舉例來說,如要排定工作流程每 5 分鐘執行一次,請輸入 */5 * * * *
      • PROJECT_ID:您的 Google Cloud 專案 ID。
      • REGION_NAME:工作流程所在的區域,例如 us-central1
      • WORKFLOW_NAME:要排定執行時間的工作流程名稱。
      • DOUBLE_ESCAPED_JSON_STRING:您要傳遞的任何引數的 JSON 編碼。加引號字串中的雙引號會使用反斜線 (\) 逸出。例如:--message-body="{\"argument\": \"{\\\"foo\\\": \\\"bar\\\"}\"}"
      • TIME_ZONE:Cloud Scheduler 應使用的時區,用來解讀您提供的排程。例如:America/New_York
      • SERVICE_ACCOUNT_NAME:先前建立的服務帳戶名稱。
    2. 如要列出專案中的所有工作:

      gcloud scheduler jobs list

    3. 如要刪除工作:

      gcloud scheduler jobs delete JOB_NAME

工作流程現在會按照您定義的頻率執行。

後續步驟