使用 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.
-
如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
-
如要初始化 gcloud CLI,請執行下列指令:
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.
-
如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
-
如要初始化 gcloud CLI,請執行下列指令:
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 說明文件。
開啟終端機並建立目錄:
mkdir terraform
前往
terraform
目錄:cd terraform
在目錄中新增檔案
main.tf
:nano main.tf
將下列 Terraform 資源供應商 Google Cloud新增至
main.tf
檔案:啟用 Cloud Scheduler 和 Pub/Sub API:
建立 Pub/Sub 主題,做為發布者可傳送訊息的資源:
這會建立名為「
pubsub_topic
」的主題。建立訂閱項目,接收發布至 Pub/Sub 主題的訊息:
使用
google_cloud_scheduler_job
資源建立 Cron 工作:範例中使用的引數如下:
name
:作業名稱。description
:工作說明。schedule
:工作的頻率,使用以 Unix-cron 為基礎的格式。在本範例中,
30 16 * * 7
表示工作會在星期日 16:30 執行。詳情請參閱「Cron 工作格式和時區」。region
:工作所在的區域。pubsub_target
:Pub/Sub 主題目標,包括主題的完整資源名稱 (topic_name
),工作執行時,訊息酬載 (data
) 會發布至該主題。
系統支援其他引數。詳情請參閱 Terraform 登錄檔引數參考資料。
開啟終端機,並在
terraform
目錄中初始化 Terraform:terraform init
確認您透過 Terraform 提議的變更符合預期計畫:
terraform plan
您可以忽略有關未使用
-out
選項的附註。建立 Cron 工作:
terraform apply
在「Enter a value」(輸入值) 提示中輸入
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 訊息:
gcloud pubsub subscriptions pull pubsub_subscription --limit 5
如果一開始並沒有提取任何訊息,請再次執行指令。
查看執行工作的結果。畫面會顯示類似以下的輸出內容:
DATA: Hello world! MESSAGE_ID: 5028933846601543 ORDERING_KEY: ATTRIBUTES: DELIVERY_ATTEMPT: ACK_ID: RFAGFixdRkhRNxkIaFEOT14jPzUgKEUQAgVPAihdeTFXLkFacGhRDRlyfWB9[...]
- 刪除專案後,系統就會停止對該專案使用的所有資源收取費用。 Google Cloud 請注意,根據預設,Cloud Shell 主目錄中的任何檔案 (例如任何 Terraform 檔案) 都會在工作階段之間保留。
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID
或者,您也可以刪除所有使用 Terraform 建立的資源。
terraform destroy
指令會終止Terraform 狀態中指定的所有資源。不會刪除目前 Terraform 專案未管理的資源。您的 Terraform 設定檔不會遭到毀損。詳情請參閱「銷毀基礎架構」。terraform destroy
建立 Terraform 設定檔
如要搭配使用 Terraform 和 Cloud Scheduler,您需要建立設定檔來描述基礎架構,並建立執行計畫。接著,您將設定檔套用至平台或服務,執行佈建基礎架構的作業。
請按照下列步驟建立名為 main.tf
的 Terraform 設定檔:
建立 Cron 工作
部署 Terraform 資源,建立 Cron 工作。
您已建立一項工作,會在週日 16:30 將訊息傳送至 Pub/Sub 主題。現在可以執行工作。
執行工作
除了按照指定時間表執行作業,您也可以執行下列指令,強制立即執行作業。
gcloud scheduler jobs run test-job --location=us-central1
請注意,由於某些初始設定的影響,在專案中建立的第一項工作可能需要幾分鐘的時間才能執行。
驗證結果
確認 Pub/Sub 主題是否收到來自作業的訊息。
清除所用資源
如要避免系統向您的 Google Cloud 帳戶收取本頁面所用資源的費用,請刪除含有這些資源的 Google Cloud 專案。