排定工作流程

本教學課程說明如何使用 Cloud Scheduler 自動執行 Workflows,以便按照特定排程執行工作流程 (在本例中為每 5 分鐘一次)。

建立接收執行階段引數的工作流程

工作流程定義是由一系列步驟組成,這些步驟使用 Workflows 語法描述,且可採用 YAML 或 JSON 格式編寫。建立工作流程後,請部署工作流程,以便執行。

控制台

  1. 前往 Google Cloud 控制台的「Workflows」頁面:

    前往「Workflows」頁面

  2. 點選「建立」

  3. 輸入 myFirstWorkflow 做為新工作流程的名稱。

  4. 選取「us-central1」區域。

  5. 選取您先前建立的服務帳戶。

  6. 點選「下一步」

  7. 在工作流程編輯器中,輸入下列工作流程定義。

    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}"
            }
          }
        ]
      }
    }
      

    這個工作流程會向您以執行階段引數形式傳遞名字和姓氏的人,傳回「Hello」問候語。

  8. 按一下 [Deploy] (部署)

gcloud

  1. 開啟終端機。
  2. 將下列工作流程定義儲存為 YAML 或 JSON 檔案,例如 myFirstWorkflow.yamlmyFirstWorkflow.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}"
            }
          }
        ]
      }
    }
      

    這個工作流程會向您以執行階段引數形式傳遞名字和姓氏的人,傳回「Hello」問候語。

  3. 輸入下列指令來部署工作流程:

    gcloud workflows deploy myFirstWorkflow \
        --source=myFirstWorkflow.yaml_OR_json \
        --service-account=sa-name@PROJECT_ID.iam.gserviceaccount.com

    請將 yaml_OR_json 替換為 yamljson,視您先前建立的 Workflows 定義檔格式而定。

排定工作流程

使用先前建立的服務帳戶,建立會觸發工作流程的 Cloud Scheduler 工作。

控制台

  1. 前往 Google Cloud 控制台的「Cloud Scheduler」頁面:

    前往 Cloud Scheduler

  2. 按一下 [Create Job] (建立工作)

  3. 將「Name」(名稱) 設為 my-workflow-job

  4. 在「頻率」部分輸入:

    */5 * * * *
    這項作業每 5 分鐘執行一次。間隔是使用 unix-cron 格式定義。

  5. 針對「Timezone」(時區),選取國家/地區和時區。

    舉例來說,選取「美國」和「洛杉磯」或「太平洋夏令時間 (PDT)」

  6. 按一下「繼續」

  7. 在「目標類型」中選取「HTTP」

  8. 在「網址」中輸入:

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

  9. 將「HTTP method」保留預設的「POST」

  10. 新增下列兩個 HTTP 標頭

    • 名稱:Content-Type,值:application/octet-stream
    • 名稱:User-Agent,值:Google-Cloud-Scheduler
  11. 在「Body」中輸入:

    {"argument": "{\"firstName\":\"Sherlock\", \"lastName\":\"Holmes\"}"}
    

    這會傳遞工作流程引數的 JSON 編碼;在本例中,引數為名字「Sherlock」和姓氏「Holmes」。字串內的雙引號會使用反斜線 (\) 逸出。

  12. 在「Auth header」(驗證標頭) 部分,選取「Add OAuth token」(新增 OAuth 權杖)

  13. 輸入您先前建立的服務帳戶。

    sa-name@PROJECT_ID.iam.gserviceaccount.com
    
    您不必指定 Scope,因為系統會使用 https://www.googleapis.com/auth/cloud-platform 的預設值。

  14. 其餘設定均保留預設值,然後點按「建立」

gcloud

輸入下列指令,排定名為 my-workflow-job 的工作:

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"

間隔是使用 unix-cron 格式定義。

message-body 標記用於傳遞工作流程引數的 JSON 編碼;在本例中,引數為名字「Sherlock」和姓氏「Holmes」。字串內的雙引號會使用反斜線 (\) 逸出。

工作流程現在每 5 分鐘執行一次。

如要進一步瞭解 gcloud scheduler 標記,以及如何套用通話記錄,以便記錄工作流程執行期間的每個通話步驟,請參閱「為工作流程排程」和gcloud 參考資料

執行作業並驗證結果

控制台

  1. 前往 Google Cloud 控制台的「Cloud Scheduler」頁面:

    前往 Cloud Scheduler

    如果沒有顯示工作,可能需要重新整理頁面。

  2. 針對名為 my-workflow-job 的工作,按一下「立即執行」

    「結果」值應會更新為「成功」

  3. 前往 Google Cloud 控制台的「Workflows」頁面:

    前往「Workflows」頁面

  4. 在工作流程清單中,按一下「myFirstWorkflow」myFirstWorkflow開啟詳細資料頁面。

    工作流程的執行狀態應為「Succeeded」(成功)

  5. 按一下工作流程的執行 ID 開啟詳細資料頁面,並在「Output」(輸出) 窗格中查看工作流程結果。

    輸出內容應為「Hello, Sherlock Holmes!」。

gcloud

  1. 執行 Cloud Scheduler 工作,以執行工作流程:

    gcloud scheduler jobs run my-workflow-job
    
  2. 擷取工作流程的執行作業 ID:

    gcloud workflows executions list myFirstWorkflow
    

    輸出內容應類似以下內容,且執行 ID 會以粗體顯示:

    projects/316710615161/locations/us-central1/workflows/myFirstWorkflow/executions/138b31e1-f3bb-4ba7-a6da-008d0cb4a320
  3. 擷取工作流程的執行結果:

    gcloud workflows executions describe EXECUTION_ID --workflow myFirstWorkflow

    EXECUTION_ID 替換為上一步傳回的執行作業 ID。

    輸出應會如下所示:

    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

恭喜!您已成功建立 Cloud Scheduler 工作,可依特定排程自動執行工作流程。