本页面介绍了如何使用 Cloud Scheduler 以特定计划运行工作流,例如每个星期一上午 9 点或每 15 分钟运行一次工作流。您可以在 Google Cloud 控制台中或使用 Google Cloud CLI 来配置时间表。
准备工作
- 如果您还没有要安排的工作流,请创建和部署工作流。
- 
  
  
    
      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 theserviceusage.services.enablepermission. Learn how to grant roles. 
  
或者,在终端中输入以下命令:
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.iam.gserviceaccount.com \ --role roles/workflows.invoker - 替换以下内容: - PROJECT_ID:您的 Google Cloud 项目的 ID。
- SERVICE_ACCOUNT_NAME:您之前创建的服务账号的名称。
 
- 通过使用先前创建的服务账号进行身份验证,创建一个 Cloud Scheduler 作业以触发您的工作流。 - 请注意,如果您要应用通话记录,则必须通过Google Cloud 控制台中的工作流页面配置通话记录。如需了解详情,请参阅以下步骤。 - 控制台- 如需安排工作流,请前往 Google Cloud 控制台中的 Workflows 页面: 
- 在 Workflows 页面上,选择一个工作流以转到其详情页面。 
- 在工作流详细信息页面上,点击 edit 修改。 
- 在修改工作流页面上,选择添加新的触发器 > Cloud Scheduler。 - 此时会打开创建 Scheduler 作业窗格。 
- 制定时间表: 
- 点击继续。 
- 配置执行: - 在工作流的实参字段中,指定要在执行之前传递给工作流的任何运行时实参。实参必须采用 JSON 格式。例如: - {"firstName":"Sherlock", "lastName":"Holmes"}- {},或将该字段留空。
- 在工作流的调用日志级别列表中,选择要在执行工作流期间应用的调用日志记录级别: - 未指定:未指定日志记录级别。这是默认设置。 除非未指定执行日志级别(默认),否则执行日志级别优先于任何工作流日志级别;在这种情况下,工作流日志级别适用。
- 仅限错误:记录所有已捕获的异常;或者调用因异常而停止时。
- 所有调用:记录对子工作流或库函数及其结果的所有调用。
- 无日志:无调用日志记录。
 
- 在服务账号列表中,选择您之前创建的服务账号。 
 
- 点击创建。 - 请注意,如果您要更新现有工作流,则无需重新部署工作流。 - Cloud Scheduler 作业现在列在工作流详情页面的触发器标签页上。 
- 如需更新或删除作业,您必须修改工作流: - 在工作流详细信息页面上,点击 edit 修改。
- 在 Triggers 部分,找到要更新或删除的作业。
- 点击 edit 修改资源或 delete 删除资源。
 
 - 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.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:您之前创建的服务账号的名称。
 
- 如需列出项目中的所有作业,请执行以下操作: - gcloud scheduler jobs list 
- 如需删除任务,请执行以下操作: - gcloud scheduler jobs delete JOB_NAME 
 
您的工作流现在会根据您定义的频率执行。