本教學課程說明如何使用 Cloud Scheduler 自動執行 Workflows,以便按照特定排程執行工作流程 (在本例中為每 5 分鐘一次)。
建立接收執行階段引數的工作流程
工作流程定義是由一系列步驟組成,這些步驟使用 Workflows 語法描述,且可採用 YAML 或 JSON 格式編寫。建立工作流程後,請部署工作流程,以便執行。
控制台
前往 Google Cloud 控制台的「Workflows」頁面:
點選「建立」。
輸入
myFirstWorkflow
做為新工作流程的名稱。選取「us-central1」區域。
選取您先前建立的服務帳戶。
點選「下一步」。
在工作流程編輯器中,輸入下列工作流程定義。
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」問候語。
按一下 [Deploy] (部署)。
gcloud
- 開啟終端機。
將下列工作流程定義儲存為 YAML 或 JSON 檔案,例如 myFirstWorkflow.yaml 或 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}" } } ] } }
這個工作流程會向您以執行階段引數形式傳遞名字和姓氏的人,傳回「Hello」問候語。
輸入下列指令來部署工作流程:
gcloud workflows deploy myFirstWorkflow \ --source=myFirstWorkflow.yaml_OR_json \ --service-account=sa-name@PROJECT_ID.iam.gserviceaccount.com
請將
yaml_OR_json
替換為yaml
或json
,視您先前建立的 Workflows 定義檔格式而定。
排定工作流程
使用先前建立的服務帳戶,建立會觸發工作流程的 Cloud Scheduler 工作。
控制台
前往 Google Cloud 控制台的「Cloud Scheduler」頁面:
按一下 [Create Job] (建立工作)。
將「Name」(名稱) 設為
my-workflow-job
。在「頻率」部分輸入:
這項作業每 5 分鐘執行一次。間隔是使用 unix-cron 格式定義。*/5 * * * *
針對「Timezone」(時區),選取國家/地區和時區。
舉例來說,選取「美國」和「洛杉磯」或「太平洋夏令時間 (PDT)」。
按一下「繼續」。
在「目標類型」中選取「HTTP」。
在「網址」中輸入:
https://workflowexecutions.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/workflows/myFirstWorkflow/executions
將「HTTP method」保留預設的「POST」。
新增下列兩個 HTTP 標頭:
- 名稱:
Content-Type
,值:application/octet-stream
- 名稱:
User-Agent
,值:Google-Cloud-Scheduler
- 名稱:
在「Body」中輸入:
{"argument": "{\"firstName\":\"Sherlock\", \"lastName\":\"Holmes\"}"}
這會傳遞工作流程引數的 JSON 編碼;在本例中,引數為名字「Sherlock」和姓氏「Holmes」。字串內的雙引號會使用反斜線 (\) 逸出。
在「Auth header」(驗證標頭) 部分,選取「Add OAuth token」(新增 OAuth 權杖)。
輸入您先前建立的服務帳戶。
您不必指定 Scope,因為系統會使用sa-name@PROJECT_ID.iam.gserviceaccount.com
https://www.googleapis.com/auth/cloud-platform
的預設值。其餘設定均保留預設值,然後點按「建立」。
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
參考資料。
執行作業並驗證結果
控制台
前往 Google Cloud 控制台的「Cloud Scheduler」頁面:
如果沒有顯示工作,可能需要重新整理頁面。
針對名為
my-workflow-job
的工作,按一下「立即執行」。「結果」值應會更新為「成功」。
前往 Google Cloud 控制台的「Workflows」頁面:
在工作流程清單中,按一下「myFirstWorkflow」myFirstWorkflow開啟詳細資料頁面。
工作流程的執行狀態應為「Succeeded」(成功)。
按一下工作流程的執行 ID 開啟詳細資料頁面,並在「Output」(輸出) 窗格中查看工作流程結果。
輸出內容應為「Hello, Sherlock Holmes!」。
gcloud
執行 Cloud Scheduler 工作,以執行工作流程:
gcloud scheduler jobs run my-workflow-job
擷取工作流程的執行作業 ID:
gcloud workflows executions list myFirstWorkflow
輸出內容應類似以下內容,且執行 ID 會以粗體顯示:
projects/316710615161/locations/us-central1/workflows/myFirstWorkflow/executions/138b31e1-f3bb-4ba7-a6da-008d0cb4a320
擷取工作流程的執行結果:
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 工作,可依特定排程自動執行工作流程。