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

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

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

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

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

准备工作

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. Install the Google Cloud CLI.

  3. 如果您使用的是外部身份提供方 (IdP),则必须先 使用联合身份登录 gcloud CLI

  4. 如需初始化 gcloud CLI,请运行以下命令:

    gcloud init
  5. 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.

  6. Verify that billing is enabled for your Google Cloud project.

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

    gcloud services enable cloudscheduler.googleapis.com pubsub.googleapis.com
  8. Install the Google Cloud CLI.

  9. 如果您使用的是外部身份提供方 (IdP),则必须先 使用联合身份登录 gcloud CLI

  10. 如需初始化 gcloud CLI,请运行以下命令:

    gcloud init
  11. 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.

  12. Verify that billing is enabled for your Google Cloud project.

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

    gcloud services enable cloudscheduler.googleapis.com pubsub.googleapis.com
  14. 创建 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"
    

    您已创建一项作业,该作业会在周日 16:30 向您的 Pub/Sub 主题发送“Hello world”消息。

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

    运行作业

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

    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 主题的 ID。

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

      gcloud pubsub subscriptions delete SUBSCRIPTION_ID
      

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

    后续步骤