使用 gcloud CLI 安排和运行 Cron 作业

本快速入门介绍了如何使用 gcloud CLI 通过 Cloud Scheduler 执行一些基本操作。

在本快速入门中,您将执行以下操作:

  1. 创建 Pub/Sub 主题以设置为 Cloud Scheduler 作业目标。
  2. 使用 Cloud Scheduler 创建一个 Cron 作业,并为该作业配置周期性时间表。
  3. 运行作业。
  4. 验证作业是否已成功运行。

Cloud Scheduler 提供免费层级,运行本快速入门 产生的任何费用。要了解详情,请参阅价格

准备工作

  1. 登录您的 Google Cloud 账号。如果您是 Google Cloud 新手,请创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
  2. Install the Google Cloud CLI.
  3. To initialize the gcloud CLI, run the following command:

    gcloud init
  4. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  5. 确保您的 Google Cloud 项目已启用结算功能

  6. Enable the Cloud Scheduler, Pub/Sub APIs:

    gcloud services enable cloudscheduler.googleapis.com pubsub.googleapis.com
  7. Install the Google Cloud CLI.
  8. To initialize the gcloud CLI, run the following command:

    gcloud init
  9. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  10. 确保您的 Google Cloud 项目已启用结算功能

  11. Enable the Cloud Scheduler, Pub/Sub APIs:

    gcloud services enable cloudscheduler.googleapis.com pubsub.googleapis.com

创建 Pub/Sub 主题和订阅

Pub/Sub 主题是发布者可向其发送消息的资源。 如需接收发布到某个主题的消息,您必须创建对该主题的订阅。

  1. 设置 Pub/Sub 主题以用作 Cron 作业的目标:

    gcloud pubsub topics create cron-topic
    

    这将创建一个名为 cron-topic 的主题。

  2. 要接收消息和查看作业结果,请创建 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-central1" \
    --message-body="Hello world"

您已经创建了一个作业,它会发送“Hello World”将消息发送到您的 Pub/Sub 搜索主题。

现在,您可以运行该作业了。

运行作业

除了按照指定的时间表执行作业之外,您还可以强制作业立即运行:

gcloud scheduler jobs run my-cron-job --location="us-central1"

请注意,由于需要进行一些初始配置,因此在项目中创建的第一项作业可能需要几分钟时间才能运行完毕。

接下来,您可以验证 Pub/Sub 主题是否收到了消息。

验证 Pub/Sub 中的结果

验证您的 Pub/Sub 主题是否将收到来自作业的消息。

  1. 从订阅中拉取 Pub/Sub 消息:

    gcloud pubsub subscriptions pull cron-sub --limit 5
    

    如果一开始没有拉取到消息,请再次运行该命令。

  2. 查看运行作业的结果。输出应类似如下所示:

    DATA: Hello world!
    MESSAGE_ID: 5028933846601543
    ORDERING_KEY:
    ATTRIBUTES:
    DELIVERY_ATTEMPT:
    ACK_ID: RFAGFixdRkhRNxkIaFEOT14jPzUgKEUQAgVPAihdeTFXLkFacGhRDRlyfWB9[...]
    

清理

为避免因本页面中使用的资源导致您的 Google Cloud 账号产生费用,请删除包含这些资源的 Google Cloud 项目。

    Delete a Google Cloud project:

    gcloud projects delete PROJECT_ID

或者,删除您为本快速入门创建的资源:

  1. 删除 Cron 作业。在 Cloud Shell 中或您安装的机器上 gcloud CLI,请运行以下命令:

    gcloud scheduler jobs delete MY_JOB \
        --location="LOCATION"
    

    替换以下内容:

    • MY_JOB:要删除的作业的名称。
    • LOCATION:作业的位置。默认情况下,使用 当前项目的 App Engine 应用的位置(如果有) 关联的应用。
  2. 删除 Pub/Sub 主题。在 Cloud Shell 中或安装了 gcloud CLI 的机器上,运行以下命令:

    gcloud pubsub topics delete TOPIC_ID
    

    TOPIC_ID 替换为 要删除的 Pub/Sub 主题。

  3. 删除 Pub/Sub 订阅。在 Cloud Shell 中或安装了 gcloud CLI 的机器上,运行以下命令:

    gcloud pubsub subscriptions delete SUBSCRIPTION_ID
    

    SUBSCRIPTION_ID 替换为要删除的 Pub/Sub 订阅的 ID。

后续步骤