依排程執行工作

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

如果您的 Google Cloud 專案位於虛擬私有雲網路的 VPC Service Controls 範圍內,請參閱「在 VPC Service Controls 範圍內依排程執行作業」,瞭解如何為該用途排定作業。

必要的角色

如要取得執行本頁所述作業所需的權限,請要求管理員授予您 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 Scheduler。
    • CLOUD_RUN_REGION,並指定 Cloud Run 工作的區域。如要預覽,請使用 europe-west9
    • 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 工作。

後續步驟

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