使用 gcloud CLI 安排和运行 Cron 作业
本快速入门介绍了如何使用 gcloud CLI 通过 Cloud Scheduler 执行一些基本操作。
在本快速入门中,您将执行以下操作:
- 创建一个 Pub/Sub 主题,以设置为 Cloud Scheduler 作业目标。
- 使用 Cloud Scheduler 创建 Cron 作业,并为该作业配置周期性时间表。
- 运行作业。
- 验证作业是否已成功运行。
Cloud Scheduler 提供免费层级,运行此快速入门不应产生任何费用。要了解详情,请参阅价格。
准备工作
- 登录您的 Google Cloud 账号。如果您是 Google Cloud新手,请 创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
-
安装 Google Cloud CLI。
-
如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI。
-
如需初始化 gcloud CLI,请运行以下命令:
gcloud init -
选择或创建项目所需的角色
- 选择项目:选择项目不需要特定的 IAM 角色,您可以选择已获授角色的任何项目。
-
创建项目:如需创建项目,您需要拥有 Project Creator 角色 (
roles/resourcemanager.projectCreator),该角色包含resourcemanager.projects.create权限。了解如何授予角色。
-
创建 Google Cloud 项目:
gcloud projects create PROJECT_ID
将
PROJECT_ID替换为您要创建的 Google Cloud 项目的名称。 -
选择您创建的 Google Cloud 项目:
gcloud config set project PROJECT_ID
将
PROJECT_ID替换为您的 Google Cloud 项目名称。
-
如果您要使用现有项目来完成本指南,请验证您是否拥有完成本指南所需的权限。如果您创建了新项目,则您已拥有所需的权限。
启用 Cloud Scheduler 和 Pub/Sub API:
启用 API 所需的角色
如需启用 API,您需要拥有 Service Usage Admin IAM 角色 (
roles/serviceusage.serviceUsageAdmin),该角色包含serviceusage.services.enable权限。了解如何授予角色。gcloud services enable cloudscheduler.googleapis.com
pubsub.googleapis.com -
安装 Google Cloud CLI。
-
如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI。
-
如需初始化 gcloud CLI,请运行以下命令:
gcloud init -
选择或创建项目所需的角色
- 选择项目:选择项目不需要特定的 IAM 角色,您可以选择已获授角色的任何项目。
-
创建项目:如需创建项目,您需要拥有 Project Creator 角色 (
roles/resourcemanager.projectCreator),该角色包含resourcemanager.projects.create权限。了解如何授予角色。
-
创建 Google Cloud 项目:
gcloud projects create PROJECT_ID
将
PROJECT_ID替换为您要创建的 Google Cloud 项目的名称。 -
选择您创建的 Google Cloud 项目:
gcloud config set project PROJECT_ID
将
PROJECT_ID替换为您的 Google Cloud 项目名称。
-
如果您要使用现有项目来完成本指南,请验证您是否拥有完成本指南所需的权限。如果您创建了新项目,则您已拥有所需的权限。
启用 Cloud Scheduler 和 Pub/Sub API:
启用 API 所需的角色
如需启用 API,您需要拥有 Service Usage Admin IAM 角色 (
roles/serviceusage.serviceUsageAdmin),该角色包含serviceusage.services.enable权限。了解如何授予角色。gcloud services enable cloudscheduler.googleapis.com
pubsub.googleapis.com
所需的角色
如需获得完成本快速入门所需的权限,请让您的管理员为您授予项目的以下 IAM 角色:
- Cloud Scheduler Admin (
roles/cloudscheduler.admin) - Pub/Sub Editor (
roles/pubsub.editor)
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
创建 Pub/Sub 主题和订阅
Pub/Sub 主题是一种资源,发布者可以向其发送消息。要接收发布到主题的消息,您必须创建对该主题的订阅。
设置 Pub/Sub 主题以用作 Cron 作业的目标:
gcloud pubsub topics create cron-topic这将创建一个名为
cron-topic的主题。如需接收消息并查看作业的结果,请创建 Pub/Sub 订阅:
gcloud pubsub subscriptions create cron-sub --topic cron-topic
使用 Cloud Scheduler 创建 Cron 作业
使用 gcloud scheduler jobs create pubsub 命令设置工作单元(称为 cron 作业),该工作单元会按周期性时间表发送到 Pub/Sub 目标。时间表以基于 unix-cron 的格式指定。如需了解详情,请参阅 Cron 作业格式和时区。
gcloud scheduler jobs create pubsub my-cron-job \
--schedule="30 16 * * 7" \
--topic=cron-topic \
--location="us-east1" \
--message-body="Hello world"
您已创建一项作业,该作业会在周日 16:30 向您的 Pub/Sub 主题发送“Hello world”消息。
您现在可以运行作业了。
运行作业
除了按照指定的时间表执行作业之外,您还可以强制作业立即运行:
gcloud scheduler jobs run my-cron-job --location="us-east1"
请注意,由于需要进行一些初始配置,因此在项目中创建的第一项作业可能需要几分钟时间才能运行完毕。
接下来,您可以验证 Pub/Sub 主题是否收到了消息。
验证 Pub/Sub 中的结果
验证您的 Pub/Sub 主题是否将收到来自作业的消息。
从订阅中拉取 Pub/Sub 消息:
gcloud pubsub subscriptions pull cron-sub --limit 5如果一开始没有拉取到消息,请再次运行该命令。
查看运行作业的结果。输出应类似如下所示:
DATA: Hello world! MESSAGE_ID: 5028933846601543 ORDERING_KEY: ATTRIBUTES: DELIVERY_ATTEMPT: ACK_ID: RFAGFixdRkhRNxkIaFEOT14jPzUgKEUQAgVPAihdeTFXLkFacGhRDRlyfWB9[...]
清理
为避免因本页面中使用的资源导致您的 Google Cloud 账号产生费用,请删除包含这些资源的 Google Cloud 项目。
删除 Google Cloud 项目:
gcloud projects delete PROJECT_ID
或者,您也可以删除为此快速入门创建的资源:
删除 Cron 作业。在 Cloud Shell 中或安装了 gcloud CLI 的机器上,运行以下命令:
gcloud scheduler jobs delete MY_JOB \ --location="LOCATION"替换以下内容:
MY_JOB:要删除的作业的名称。LOCATION:作业的位置。默认情况下,如果存在关联的应用,则使用当前项目的 App Engine 应用的位置。
删除 Pub/Sub 主题。在 Cloud Shell 中或安装了 gcloud CLI 的机器上,运行以下命令:
gcloud pubsub topics delete TOPIC_ID将
TOPIC_ID替换为要删除的 Pub/Sub 主题的 ID。删除 Pub/Sub 订阅。在 Cloud Shell 中或在安装了 gcloud CLI 的机器上,运行以下命令:
gcloud pubsub subscriptions delete SUBSCRIPTION_ID将
SUBSCRIPTION_ID替换为要删除的 Pub/Sub 订阅的 ID。
后续步骤
详细了解 Cloud Scheduler