本页面介绍了如何使用 Cloud Scheduler 以特定计划运行工作流,例如每个星期一上午 9 点或每 15 分钟运行一次工作流。
准备工作
安排工作流
为了让 Cloud Scheduler 向 Workflows API 发出请求,您必须先创建一个服务帐号:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
其中,SERVICE_ACCOUNT_NAME 是您要为新服务指定的名称。
为将要运行 Cloud Scheduler 命令的帐号授予使用您的服务帐号的权限。
为您的新服务帐号授予 workflows.invoker 角色,以便该帐号有权触发您的工作流:
gcloud projects add-iam-policy-binding PROJECT_NAME \ --member serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_NAME.iam.gserviceaccount.com \ --role roles/workflows.invoker
其中:
- PROJECT_NAME 是您的 Google Cloud 项目的名称。
- SERVICE_ACCOUNT_NAME 是您之前创建的服务帐号的名称。
通过使用先前创建的服务帐号进行身份验证,创建一个 Cloud Scheduler 作业以触发您的工作流。例如,要将您的工作流安排成每 5 分钟执行一次(使用 unix-cron 格式定义间隔),请执行以下操作:
gcloud beta scheduler jobs create http JOB_NAME \ --schedule="*/5 * * * *" \ --uri="https://workflowexecutions.googleapis.com/v1/projects/PROJECT_NAME/locations/REGION_NAME/workflows/WORKFLOW_NAME/executions" \ --time-zone="TIME_ZONE" \ --oauth-service-account-email="SERVICE_ACCOUNT_NAME@PROJECT_NAME.iam.gserviceaccount.com"
其中:
- JOB_NAME 是您提供给 Cloud Scheduler 作业的名称。
- PROJECT_NAME 是您的 Google Cloud 项目的名称。
- REGION_NAME 是您的工作流所在的区域,例如
us-central1
。 - WORKFLOW_NAME 是您要计划执行的工作流的名称。
- TIME_ZONE 是 Cloud Scheduler 应该用于解读您提供的计划的时区。
- SERVICE_ACCOUNT_NAME 是您之前创建的服务帐号的名称。
现在,您的工作流每 5 分钟执行一次。