使用 Terraform 安排和运行 Cron 作业
本快速入门介绍了如何使用 Terraform 创建 Cloud Scheduler 的 Cron 作业。Terraform 是一种基础架构即代码 (IaC) 工具,可让您使用代码以可预测的方式创建、更改和改进您的云基础架构。您可以详细了解如何使用 Terraform 在 Google Cloud 上预配基础架构。
Cloud Scheduler 提供免费层级,运行此快速入门不会产生任何费用。如需了解详情,请参阅价格。
在本快速入门中,您将执行以下操作:
- 使用 Terraform 为 Cloud Scheduler 创建 Cron 作业。
- 为作业设置周期性时间表。
- 将 Pub/Sub 主题指定为作业目标。
- 运行该作业。
- 验证作业是否已成功运行。
准备工作
-
Sign in to your Google Account.
If you don't already have one, sign up for a new account.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
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.
-
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
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.
-
- Cloud Shell 已集成 Terraform。如果您需要安装 Terraform,请参阅 HashiCorp Terraform 文档。
创建 Terraform 配置文件
要将 Terraform 与 Cloud Scheduler 搭配使用,您需要创建一个 来描述您的基础架构并创建执行计划。 然后,您将配置文件应用于平台或服务,以执行预配基础架构的操作。
完成以下步骤以创建名为
main.tf
:
打开终端并创建目录:
mkdir terraform
转到
terraform
目录:cd terraform
将新文件
main.tf
添加到目录:nano main.tf
将以下 Google Cloud Terraform 提供程序资源添加到
main.tf
文件中:启用 Cloud Scheduler API 和 Pub/Sub API:
创建 Pub/Sub 主题,将其作为可以向其中发送消息的资源 发布商发送以下内容:
这将创建一个名为
pubsub_topic
的主题。创建订阅以接收发布到 Pub/Sub 主题:
使用
google_cloud_scheduler_job
资源创建 Cron 作业:该示例中使用了以下参数:
name
:作业的名称。description
:作业的说明。schedule
:作业的频率,使用基于 unix-cron 的格式。在此示例中,
30 16 * * 7
表示作业将在以下时间的 每周日。如需了解详情,请参阅 Cron 作业格式和时区。region
:作业所在的区域。pubsub_target
:Pub/Sub 主题目标,包括 接收消息的主题的完整资源名称 (topic_name
) 载荷 (data
) 会在作业运行时发布。
还支持其他参数。有关详情,请参阅 Terraform Registry 参数参考。
创建 Cron 作业
部署 Terraform 资源以创建 Cron 作业。
打开终端,在
terraform
目录中初始化 Terraform:terraform init
检查您向 Terraform 建议的更改是否与预期方案匹配:
terraform plan
您可以忽略有关不使用
-out
选项的备注。创建 Cron 作业:
terraform apply
在输入值提示符处,输入
yes
以继续创建资源。确认已创建作业:
gcloud scheduler jobs describe test-job --location=us-central1
输出应类似如下所示:
description: test job lastAttemptTime: '2024-04-04T13:56:00.669530Z' name: projects/PROJECT_ID/locations/us-central1/jobs/test-job pubsubTarget: data: dGVzdA== topicName: projects/PROJECT_ID/topics/pubsub_topic schedule: '30 16 * * 7' scheduleTime: '2024-04-04T13:58:00.737907Z' state: ENABLED
您已创建向 Pub/Sub 主题发送消息的作业 在星期日 16:30您现在可以运行作业了。
运行作业
除了按照指定的时间表执行外,您还可以强制 来立即执行作业。
gcloud scheduler jobs run test-job --location=us-central1
请注意,由于需要进行一些初始配置,因此在项目中创建的第一项作业可能需要几分钟时间才能运行完毕。
验证结果
验证您的 Pub/Sub 主题是否正在接收来自作业的消息。
从订阅中拉取 Pub/Sub 消息:
gcloud pubsub subscriptions pull pubsub_subscription --limit 5
如果一开始没有拉取到消息,请再次运行该命令。
查看运行作业的结果。输出应类似如下所示:
DATA: Hello world! MESSAGE_ID: 5028933846601543 ORDERING_KEY: ATTRIBUTES: DELIVERY_ATTEMPT: ACK_ID: RFAGFixdRkhRNxkIaFEOT14jPzUgKEUQAgVPAihdeTFXLkFacGhRDRlyfWB9[...]
清理
为避免因本页面中使用的资源导致您的 Google Cloud 账号产生费用,请删除包含这些资源的 Google Cloud 项目。
- 删除 Google Cloud 项目后,所有
该项目中使用的资源。请注意,默认情况下
Cloud Shell 主目录(例如任何 Terraform 文件)会保留下来
。
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID
或者,您也可以删除 Terraform。
terraform destroy
命令会终止 Terraform 状态中指定的所有资源。它不会销毁当前 Terraform 项目不管理的资源。您的 Terraform 配置文件不会被销毁。如需了解详情,请参阅 销毁基础设施。terraform destroy