執行工作

本頁說明如何執行 Cloud Run 作業。執行工作會建立工作執行作業,所有工作都必須順利執行完畢,工作執行作業才會成功。作業執行會將記錄寫入 Cloud Logging,並將監控資料傳送至 Cloud Monitoring

除了這些記錄功能,您也可以使用執行作業詳細資料窗格,查看最近 1,000 次作業執行作業的詳細資料,以及過去七天內發生的任何執行作業。系統會移除舊的執行作業詳細資料,且不再顯示於執行作業詳細資料窗格。不過,舊版執行的記錄和監控資料仍會保留在 Cloud LoggingCloud Monitoring 中,但須遵守這些產品的保留政策。

必要的角色

如要取得本頁面所述作業所需的權限,請要求管理員在 Cloud Run 作業中授予您下列其中一個 IAM 角色:

  • 如要使用 Google Cloud CLI 執行工作,請在 Cloud Run 工作上啟用 Cloud Run Invoker (roles/run.invoker)
  • 如要使用 Google Cloud 控制台執行工作、覆寫工作設定或取消工作執行作業,請點選 Cloud Run 工作上的「Cloud Run 開發人員」 (roles/run.developer)

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

執行工作

您可以使用 Google Cloud 控制台、Google Cloud CLI、用戶端程式庫或 REST API 執行工作。

控制台

如要執行工作,請按照下列指示操作:

  1. 前往 Google Cloud 控制台的 Cloud Run「Jobs」頁面:

    前往 Cloud Run jobs

  2. 找出感興趣的工作。

  3. 按一下工作,即可顯示工作詳細資料頁面。

  4. 點選「Execute」

gcloud

如要執行現有工作,請按照下列指示操作:

gcloud run jobs execute JOB_NAME

如要讓指令等待執行完成,請使用

gcloud run jobs execute JOB_NAME --wait --region=REGION

更改下列內容:

  • JOB_NAME:作業名稱。
  • REGION:資源所在的區域。例如:europe-west1。 或者,您也可以設定 run/region 屬性。

用戶端程式庫

如要從程式碼執行現有工作:

REST API

如要執行現有作業,請將 POST HTTP 要求傳送至 jobs.run API 方法

例如使用 curl

curl -H "Content-Type: application/json" \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  -X POST \
  -d '' \
  https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/jobs/JOB_NAME:run

更改下列內容:

  • ACCESS_TOKEN:帳戶的有效存取權杖,該帳戶具有執行工作的 IAM 權限。舉例來說,如果您已登入 gcloud,可以使用 gcloud auth print-access-token 擷取存取權杖。在 Cloud Run 容器執行個體中,您可以使用容器執行個體中繼資料伺服器擷取存取權杖。
  • JOB_NAME:作業名稱。
  • REGION:職缺的 Google Cloud 區域。
  • PROJECT_ID: Google Cloud 專案 ID。

立即執行工作

控制台

如要立即執行工作,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的 Cloud Run「Jobs」頁面:

    前往 Cloud Run jobs

  2. 如果您已有工作,請按一下工作,顯示工作詳細資料頁面,然後選取「查看及編輯工作設定」。如要建立新工作,請選取「Deploy container」(部署容器)

  3. 前往頁面底部,然後勾選「Execute job immediately」(立即執行工作) 方塊,再建立或更新工作。

gcloud

建立或更新工作時,您可以指定 --execute-now 旗標:

  • 建立工作:

    gcloud run jobs create JOB_NAME \
      --image IMAGE_URL \
      --execute-now \
      --region=REGION
  • 更新職缺:

    gcloud run jobs update JOB_NAME --execute-now --region=REGION

更改下列內容:

  • JOB_NAME:作業名稱。
  • IMAGE_URL容器映像檔的參照,例如 us-docker.pkg.dev/cloudrun/container/job:latest
  • REGION:資源所在的區域。例如:europe-west1

YAML

您可以將工作規格儲存在 YAML 檔案中,然後使用 gcloud CLI 部署。

  1. 如果您要建立新工作,請略過這個步驟。 如要更新現有工作,請下載其 YAML 設定

    gcloud run jobs describe JOB_NAME --format export > job.yaml
  2. 如圖所示設定 startExecutionToken 屬性:

    apiVersion: run.googleapis.com/v2
    kind: Job
    metadata:
      name: JOB_NAME
    spec:
      template:
        spec:
          template:
            spec:
              containers:
              - image: IMAGE_URL
      startExecutionToken: START_EXECUTION_SUFFIX

    更改下列內容:

    • JOB_NAME:Cloud Run 工作的名稱。工作名稱不得超過 49 個字元,且每個區域和專案的工作名稱不得重複。
    • IMAGE_URL容器映像檔的參照,例如 us-docker.pkg.dev/cloudrun/container/job:latest
    • START_EXECUTION_SUFFIX:用來建立新執行的專屬字串,做為後置字元。執行作業順利啟動後,工作就會準備就緒。工作名稱和權杖長度的總和不得超過 63 個字元。

    您也可以指定更多設定,例如環境變數或記憶體限制。

  3. 使用下列指令建立或更新作業:

    gcloud run jobs replace job.yaml

Terraform

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

在 Terraform 設定中,將下列項目新增至 google_cloud_run_v2_job 資源:
resource "google_cloud_run_v2_job" "default" {
   provider = google-beta
   name     = "cloudrun-job"
   location = "REGION"
   deletion_protection = false
   start_execution_token = "START_EXECUTION_SUFFIX"
   template {
      template {
         containers {
         image = "us-docker.pkg.dev/cloudrun/container/job"
         }
      }
   }
}

更改下列內容:

  • REGION: Google Cloud 區域。例如 europe-west1。
  • START_EXECUTION_SUFFIX:用來建立新執行的專屬字串,做為後置字元。執行作業成功啟動後,作業就會準備就緒。工作名稱和權杖長度的總和不得超過 63 個字元。

用戶端程式庫

如要使用 Cloud 用戶端程式庫,從程式碼立即執行作業:

REST API

如要在建立工作後立即執行,請將 POST HTTP 要求傳送至 Cloud Run Admin API jobs 端點

例如使用 curl

curl -H "Content-Type: application/json" \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  -X POST \
  -d '{
     "template": {
        "template": {
           "containers":
              {
                 "image": "IMAGE_URL"
              }
        }
     },
     "startExecutionToken": "START_EXECUTION_SUFFIX"
  }' \
  "https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/jobs?jobId=JOB_NAME"

更改下列內容:

  • ACCESS_TOKEN:具有建立工作權限的帳戶有效存取權杖。 舉例來說,如果您已登入 gcloud,可以使用 gcloud auth print-access-token 擷取存取權杖。在 Cloud Run 容器執行個體中,您可以使用容器執行個體中繼資料伺服器擷取存取權杖。
  • IMAGE_URL容器映像檔的參照,例如 us-docker.pkg.dev/cloudrun/container/job:latest
  • START_EXECUTION_SUFFIX:用來建立新執行的專屬字串,做為後置字元。執行作業成功啟動後,作業就會準備就緒。工作名稱和權杖長度的總和不得超過 63 個字元。
  • PROJECT_ID: Google Cloud 專案 ID。
  • REGION:職缺的 Google Cloud 區域。
  • JOB_NAME:要建立的工作名稱。

覆寫特定執行的工作設定

執行工作時,您可以設定這些參數,覆寫為工作設定的引數、環境變數、工作數量和工作逾時。您指定的參數只會影響這次執行作業,不會影響後續作業,因為基礎工作定義維持不變。

常見用途包括:

  • 您要透過程式碼以程式輔助方式執行工作,並想覆寫引數和/或環境變數,例如告知工作本次執行作業的輸入資料位置。
  • 您有一項工作,每項工作都只處理一筆輸入資料。您想根據要處理的輸入數量,覆寫工作數量。
  • 作業的執行時間每次都不一樣。您想根據工作的預期執行時間,覆寫工作逾時設定。

如要覆寫執行作業的工作設定,請按照下列步驟操作:

控制台

  1. 前往 Cloud Run jobs 頁面

  2. 找出感興趣的工作。

  3. 按一下工作,即可顯示工作詳細資料頁面。

  4. 按一下「編輯」按鈕前面的展開箭頭,然後點選「Execute with overrides」(使用覆寫執行),即可顯示「Execute job with overrides」(使用覆寫執行工作) 表單。

    圖片

  5. 視需要變更本次執行的引數、環境變數、工作數量和/或工作逾時設定,然後按一下「執行」

gcloud

使用以下指令:

gcloud run jobs execute JOB_NAME \
     --args ARGS \
     --update-env-vars KEY=VALUE>,KEY_N=VALUE_N \
     --tasks TASKS \
     --task-timeout TIMEOUT

更改下列內容:

用戶端程式庫

如要從程式碼執行現有工作,並覆寫工作設定,請執行下列操作:

REST API

如要覆寫現有工作的設定,請將 POST HTTP 要求傳送至 Cloud Run Admin API jobs 端點

例如使用 curl

curl -H "Content-Type: application/json" \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  -X POST \
  -d '{"overrides": {"containerOverrides": [{"args": ["ARGS"], "env": [{"name": "KEY", "value": "VALUE"}]}], "taskCount": TASKS, "timeout": "TIMEOUT" }}' \
  https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/jobs/JOB_NAME:run

更改下列內容:

取消工作執行作業

如要停止目前執行的 Cloud Run 工作,請使用取消功能。取消工作執行作業會停止目前的工作執行作業。已取消的執行作業狀態為「已取消」。您仍可查看執行作業,包括設定資料、記錄和監控資料。

取消工作執行不會撤銷工作執行期間的任何 Cloud Run 工作使用費用。

如要取消執行作業,請按照下列步驟操作:

控制台

  1. 前往 Cloud Run jobs 頁面

  2. 按一下工作,開啟工作詳細資料窗格。

  3. 選取要取消的工作執行作業。

  4. 在「動作」選單下方,按一下省略號圖示,然後按一下「取消」

gcloud

使用以下指令:

gcloud run jobs executions cancel EXECUTION_NAME

EXECUTION_NAME 替換為執行作業的名稱。

這項指令會要求確認,因此請輸入 y 回應提示,確認要執行這項操作。

用戶端程式庫

如要透過程式碼取消工作執行作業,請按照下列步驟操作:

REST API

如要取消工作執行作業,請將 POST HTTP 要求傳送至 Cloud Run Admin API jobs 端點

例如使用 curl

curl -H "Content-Type: application/json" \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  -X POST \
  -d '' \
  https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/jobs/JOB_NAME/executions/EXECUTION-NAME:cancel

更改下列內容:

  • ACCESS_TOKEN:帳戶的有效存取權杖,該帳戶具有取消工作執行的 IAM 權限。舉例來說,如果您已登入 gcloud,可以使用 gcloud auth print-access-token 擷取存取權杖。在 Cloud Run 容器執行個體中,您可以使用容器執行個體中繼資料伺服器擷取存取權杖。
  • JOB_NAME:作業名稱。
  • EXECUTION-NAME:工作執行的名稱。
  • REGION:職缺的 Google Cloud 區域。
  • PROJECT_ID: Google Cloud 專案 ID。

刪除工作執行作業

即使工作正在執行,您也可以刪除工作執行作業。刪除執行作業後,系統就會停止執行作業。詳情請參閱「刪除工作執行作業」。

後續步驟

執行工作後,您可以執行下列操作: