本頁面說明如何使用 Cloud Scheduler,按照特定時間表執行工作流程,例如每週一上午 9 點或每 15 分鐘。您可以在 Google Cloud 控制台或使用 Google Cloud CLI 設定排程。
事前準備
- 如果您尚未建立要排定的工作流程,請建立並部署工作流程。
啟用 Cloud Scheduler API (如果尚未啟用)。
啟用 API 所需的角色
如要啟用 API,您必須具備
serviceusage.services.enable權限。如果您建立了專案,可能已透過擁有者角色 (roles/owner) 取得這項權限。否則,您可以透過 Service Usage 管理員角色 (roles/serviceusage.serviceUsageAdmin) 取得這項權限。瞭解如何授予角色。
或者,在終端機中輸入下列指令:
gcloud services enable cloudscheduler.googleapis.com
排定工作流程
建立服務帳戶,讓 Cloud Scheduler 向 Workflows API 提出要求:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
將
SERVICE_ACCOUNT_NAME替換為長度介於 6 到 30 個字元之間的名稱。可使用小寫英數字元和破折號。服務帳戶建立後,即無法變更名稱。如要允許執行 Cloud Scheduler 指令的主體,以 Identity and Access Management (IAM) 服務帳戶的身分運作,請授予角色,允許主體模擬服務帳戶。
將 workflows.invoker 角色授予新的服務帳戶,讓帳戶有權觸發工作流程:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID. \ --role roles/workflows.invoker
更改下列內容:
PROJECT_ID: Google Cloud 專案的 ID。SERVICE_ACCOUNT_NAME:先前建立的服務帳戶名稱。
建立 Cloud Scheduler 工作來觸發工作流程,並使用先前建立的服務帳戶進行驗證。
請注意,如要套用通話記錄,必須透過Google Cloud 控制台的「Workflows」(工作流程) 頁面設定通話記錄。詳情請參閱下列步驟。
控制台
如要排定工作流程,請前往 Google Cloud 控制台的「Workflows」(工作流程) 頁面:
在「Workflows」頁面中,選取工作流程,前往其詳細資料頁面。
在「Workflow details」(工作流程詳細資料) 頁面中,按一下 edit「Edit」(編輯)。
在「Edit workflow」(編輯工作流程) 頁面中,依序選取「Add new trigger」(新增觸發條件) > 「Cloud Scheduler」。
「Create a Scheduler job」(建立 Scheduler 工作) 窗格隨即開啟。
定義排程:
按一下「繼續」。
設定執行作業:
在「Workflow's argument」(工作流程的引數) 欄位中,指定要在執行前傳遞至工作流程的任何執行階段引數。引數必須採用 JSON 格式。例如:
。如果工作流程不使用執行階段引數,請接受預設值{"firstName":"Sherlock", "lastName":"Holmes"}{},或將欄位留空。在「Workflow's call log level」(工作流程的通話記錄層級) 清單中,選取要在執行工作流程時套用的通話記錄層級:
- 未指定:未指定記錄層級。這是預設選項。 執行作業記錄檔層級的優先順序高於任何工作流程記錄檔層級,除非未指定執行作業記錄檔層級 (預設),在這種情況下,系統會套用工作流程記錄檔層級。
- 僅限錯誤:記錄所有偵測到的例外狀況,或因例外狀況而停止呼叫時。
- 所有呼叫:記錄對子工作流程或程式庫函式的所有呼叫及其結果。
- 不記錄通話記錄:不記錄通話記錄。
在「Service account」(服務帳戶) 清單中,選取您先前建立的服務帳戶。
點選「建立」。
請注意,如果您要更新現有工作流程,則「不」需要重新部署工作流程。
Cloud Scheduler 工作現在會列在「Workflow details」(工作流程詳細資料) 頁面的「Triggers」(觸發條件) 分頁中。
如要更新或刪除工作,請編輯工作流程:
- 在「Workflow details」(工作流程詳細資料) 頁面中,按一下 edit「Edit」(編輯)。
- 在「Triggers」(觸發條件) 區段中,找出要更新或刪除的工作。
- 按一下 edit「Edit resource」(編輯資源) 或 delete「Delete resource」(刪除資源)。
gcloud
開啟終端機,然後輸入下列指令:
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."
更改下列內容:
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:先前建立的服務帳戶名稱。
如要列出專案中的所有工作,請執行下列操作:
gcloud scheduler jobs list
如何刪除工作:
gcloud scheduler jobs delete JOB_NAME
工作流程現在會按照您定義的頻率執行。