使用 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. 安裝 Google Cloud CLI。

  3. 若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI

  4. 執行下列指令,初始化 gcloud CLI:

    gcloud init
  5. 建立或選取 Google Cloud 專案

    選取或建立專案所需的角色

    • 選取專案:選取專案時,不需要具備特定 IAM 角色,只要您已獲授角色,即可選取任何專案。
    • 建立專案:如要建立專案,您需要「專案建立者」角色 (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 專案名稱。

  6. 如要使用現有專案進行本指南中的操作,請確認您具有完成本指南所需的權限。如果您建立新專案,則已具備必要權限。

  7. 確認專案已啟用計費功能 Google Cloud

  8. 啟用 Cloud Scheduler 和 Pub/Sub API:

    啟用 API 時所需的角色

    如要啟用 API,您需要具備服務使用情形管理員 IAM 角色 (roles/serviceusage.serviceUsageAdmin),其中包含 serviceusage.services.enable 權限。瞭解如何授予角色

    gcloud services enable cloudscheduler.googleapis.com pubsub.googleapis.com
  9. 安裝 Google Cloud CLI。

  10. 若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI

  11. 執行下列指令,初始化 gcloud CLI:

    gcloud init
  12. 建立或選取 Google Cloud 專案

    選取或建立專案所需的角色

    • 選取專案:選取專案時,不需要具備特定 IAM 角色,只要您已獲授角色,即可選取任何專案。
    • 建立專案:如要建立專案,您需要「專案建立者」角色 (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 專案名稱。

  13. 如要使用現有專案進行本指南中的操作,請確認您具有完成本指南所需的權限。如果您建立新專案,則已具備必要權限。

  14. 確認專案已啟用計費功能 Google Cloud

  15. 啟用 Cloud Scheduler 和 Pub/Sub API:

    啟用 API 時所需的角色

    如要啟用 API,您需要具備服務使用情形管理員 IAM 角色 (roles/serviceusage.serviceUsageAdmin),其中包含 serviceusage.services.enable 權限。瞭解如何授予角色

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

必要的角色

如要取得完成本快速入門導覽課程所需的權限,請要求管理員在專案中授予您下列 IAM 角色:

如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

您或許也能透過自訂角色或其他預先定義的角色,取得必要權限。

建立 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-east1" \
    --message-body="Hello world"

您已建立一項工作,會在星期日 16:30 將「Hello world」訊息傳送至 Pub/Sub 主題。

現在可以執行工作。

執行工作

除了按照指定時間表執行作業外,您也可以強制立即執行作業:

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

請注意,由於某些初始設定的影響,在專案中建立的第一項工作可能需要幾分鐘的時間才能執行。

接著,您可以確認 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 專案。

    刪除 Google Cloud 專案:

    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。

後續步驟