依排程執行工作

本頁說明如何使用 Cloud Scheduler 依排程執行 Cloud Run 工作。

必要的角色

如要取得執行本頁所述作業所需的權限,請要求管理員在 Cloud Run 作業中授予您 IAM 角色:

如需與 Cloud Run 相關聯的 IAM 角色和權限清單,請參閱「Cloud Run IAM 角色」和「Cloud Run IAM 權限」。如果 Cloud Run 作業與Google Cloud API (例如 Cloud 用戶端程式庫) 介接,請參閱服務身分設定指南。如要進一步瞭解如何授予角色,請參閱「部署權限」和「管理存取權」。

事前準備

如果尚未建立 Cloud Run 工作,請建立一個

設定依排程執行的 Cloud Run 工作

如要依排程執行 Cloud Run 工作,請按照下列步驟操作:

控制台

  1. 前往 Cloud Run jobs

  2. 按一下要依排程執行的工作。

  3. 按一下「觸發條件」分頁標籤。

  4. 按一下「新增排程器觸發條件」

  5. 如果專案尚未啟用 Cloud Scheduler API,系統會在最右側面板中提示您啟用,請按一下「啟用 API」

  6. 填寫 Cloud Scheduler 工作表單

    圖片

  7. 在「定義時間表」下方:

    1. 為 Cloud Scheduler 工作命名。

    2. 為 Cloud Scheduler 工作選取區域。不必與 Cloud Run 工作使用的區域相符。

    3. 使用 unix-cron 格式指定工作執行頻率,例如 0 12 * * *

    4. 選取時區。

  8. 按一下「繼續」

  9. 在「Service Account」(服務帳戶) 選單中,選取有權叫用目前 Cloud Run 服務的服務帳戶。

  10. 按一下「建立」,建立 Cloud Scheduler 工作,以指定頻率執行 Cloud Run 工作。

指令列

  1. 請務必先建立 Cloud Run 工作

  2. 執行下列指令:

    gcloud scheduler jobs create http SCHEDULER_JOB_NAME \
      --location SCHEDULER_REGION \
      --schedule="SCHEDULE" \
      --uri="https://run.googleapis.com/v2/projects/PROJECT-ID/locations/CLOUD_RUN_REGION/jobs/JOB-NAME:run" \
      --http-method POST \
      --oauth-service-account-email PROJECT-NUMBER-compute@developer.gserviceaccount.com

    取代

    • SCHEDULER_JOB_NAME 改成您要為排程器工作取的名稱。
    • SCHEDULER_REGION,例如 europe-west2
    • CLOUD_RUN_REGION,並指定 Cloud Run 工作所在的區域。例如:europe-west1
    • SCHEDULE,例如 0 12 * * *
    • PROJECT-ID 為您的專案 ID。
    • PROJECT-NUMBER 改成您的專案編號。
    • JOB-NAME,並換成 Cloud Run 工作。

Terraform

如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。

在 Terraform 設定的 google_cloud_run_v2_job 資源中新增下列項目:
resource "google_cloud_scheduler_job" "job" {
  provider         = google-beta
  name             = "schedule-job"
  description      = "test http job"
  schedule         = "*/8 * * * *"
  attempt_deadline = "320s"
  region           = "us-central1"
  project          = data.google_project.project.project_id

  retry_config {
    retry_count = 3
  }

  http_target {
    http_method = "POST"
    uri         = "https://${google_cloud_run_v2_job.default.location}-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/${data.google_project.project.number}/jobs/${google_cloud_run_v2_job.default.name}:run"

    oauth_token {
      service_account_email = google_service_account.cloud_run_invoker_sa.email
    }
  }

  depends_on = [resource.google_project_service.cloudscheduler_api, resource.google_cloud_run_v2_job.default, resource.google_cloud_run_v2_job_iam_binding.binding]
}

Cloud Scheduler 會以指定的頻率執行 Cloud Run 工作。

在 VPC Service Controls 範圍內排定作業時間

如果您的 Google Cloud 專案位於虛擬私有雲網路的 VPC Service Controls 範圍內,Cloud Scheduler 與 VPC Service Controls 的整合功能支援以 Cloud Run 作業做為目標,並使用下列 URI 格式:

https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/jobs/JOB_NAME:run

更改下列內容:

  • PROJECT_ID: Google Cloud 專案 ID。
  • REGION:作業的 Google Cloud 區域。
  • JOB_NAME:Cloud Run 作業的名稱。

如要進一步瞭解如何為 Cloud Run 設定 VPC Service Controls,請參閱「使用 VPC Service Controls (VPC SC)」。如要進一步瞭解如何搭配使用 Cloud Scheduler 與 VPC Service Controls,請參閱「使用 VPC Service Controls 保護 Cron 工作」。

後續步驟

使用這項功能後,您可以執行下列操作: