本頁說明如何執行 Cloud Run 作業。執行工作會建立工作執行,其中所有任務都必須順利執行完畢,工作執行才會成功。作業執行會將記錄寫入 Cloud Logging,並將監控資料傳送至 Cloud Monitoring。
除了這些記錄功能,您也可以使用執行作業詳細資料窗格,查看工作最近 1,000 次執行作業的詳細資料,以及過去七天內發生的任何執行作業。系統會移除舊的執行作業詳細資料,且不再顯示於執行作業詳細資料窗格。不過,舊版執行的記錄和監控資料仍會保留在 Cloud Logging 和 Cloud Monitoring 中,但須遵守這些產品的保留政策。
什麼是工作執行作業?
執行 Cloud Run 工作是指例項化並執行已設定的工作負載,直到完成為止,並分成一或多個平行或循序工作,且不會監聽或處理 HTTP 要求。
工作的主要實體如下:
工作:靜態的持續性設定。這個檔案會定義容器映像檔、資源分配 (CPU、記憶體、GPU)、環境變數和執行參數 (工作總數、平行處理、逾時和重試)。
執行作業:觸發工作時建立的時間生命週期事件。「執行」代表單次工作執行的整體追蹤物件。
工作:設定容器的單一執行個體。執行作業由一或多個工作 (
taskCount) 組成。
執行作業的方法基本上有兩種:
當做一般工作。
以一般工作 (預設) 執行工作時,系統會盡快開始執行。
延後工作。
以延遲工作形式執行工作時,您同意延後非緊急工作,最多可延後 12 小時,以換取更優惠的價格。
每項工作不是一般工作就是延遲工作,但您可以為單一工作執行作業覆寫這些設定,讓一般工作以延遲工作形式執行,或讓延遲工作以一般工作形式執行。詳情請參閱「延遲執行工作」。
下表更精細地列出特定工作執行個體的可能執行情境:
| 執行方法 | 指令 / 觸發條件 | 資源分配時間 | 費用層級 | 最長延遲時間 / 逾時 | 常見用途 |
|---|---|---|---|---|---|
| 標準 (隨選) | gcloud run jobs execute |
立即開始 / 盡快開始 | 標準工作費率 | 立即啟動;最多可運作 7 天 | 臨時資料處理、手動觸發、事件導向管道 |
| 建立/更新及執行 | gcloud run jobs create/update --execute-now |
建立後立即開始 | 標準工作費率 | 立即啟動;最多可運作 7 天 | 持續整合/持續部署作業、結構定義遷移、部署後暖機 |
| 延後執行 | gcloud beta run jobs execute --delay-execution |
在系統最佳化時間範圍內啟動 | 折扣費率 | 自動取消前最多可延遲 12 小時,逾時時間上限為 12 小時 | 非緊急批次工作、夜間分析、大量 AI 推論 |
| 透過覆寫方式執行 | gcloud run jobs execute --args=... --tasks=... |
立即開始 / 盡快開始 | 標準工作費率 | 立即啟動;逾時時間遭覆寫 | 特定分割區的候補廣告、動態批次大小、偵錯執行 |
必要的角色
如要取得本頁面所述作業所需的權限,請要求管理員在 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 執行工作。
控制台
如要執行工作,請按照下列指示操作:
前往 Google Cloud 控制台的 Cloud Run「Jobs」頁面:
找出感興趣的工作。
按一下工作,即可顯示工作詳細資料頁面。
點選「Execute」。
gcloud
如要執行現有工作,請按照下列指示操作:
gcloud run jobs execute JOB_NAME
如要讓指令等待執行完成,請使用
gcloud run jobs execute JOB_NAME --wait --region=REGION
如要立即追蹤執行作業的記錄,請使用:
gcloud beta run jobs execute JOB_NAME --tail --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。
立即執行工作
控制台
如要立即執行工作,請按照下列步驟操作:
前往 Google Cloud 控制台的 Cloud Run「Jobs」頁面:
如果您有現有工作,請按一下該工作,顯示工作詳細資料頁面,然後選取「查看及編輯工作設定」。如要建立新工作,請選取「部署容器」。
前往頁面底部,然後勾選「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 部署。
如要建立新工作,請略過這個步驟。 如要更新現有工作,請下載其 YAML 設定:
gcloud run jobs describe JOB_NAME --format export > job.yaml
如圖所示設定
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 個字元。
您也可以指定更多設定,例如環境變數或記憶體限制。
使用下列指令建立或更新作業:
gcloud run jobs replace job.yaml
如果存在
job.yaml檔案,gcloud run jobs replace指令預設會使用該檔案。
Terraform
如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。
在 Terraform 設定中,將下列內容新增至google_cloud_run_v2_job 資源:resource "google_cloud_run_v2_job" "default" {
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:帳戶的有效存取權杖,該帳戶具有建立工作的 IAM 權限。舉例來說,如果您已登入 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:要建立的工作名稱。
延後執行作業
如要停用立即執行功能,或將一般工作轉換為延遲工作,請參閱「延遲執行工作」。
覆寫特定執行的工作設定
執行工作時,您可以設定這些參數,覆寫為工作設定的引數、環境變數、工作數量和工作逾時。您指定的參數只會影響這次執行作業,不會影響後續作業,因為基礎工作定義維持不變。
常見用途包括:
- 您要透過程式碼以程式輔助方式執行工作,並想覆寫引數和/或環境變數,例如告知工作本次執行的輸入資料位置。
- 您有一項工作,其中每個工作都只會處理一筆輸入資料。您想根據要處理的輸入數量,覆寫任務數量。
- 作業的執行時間每次都不一樣。您想根據工作的預期執行時間,覆寫工作逾時設定。
如要覆寫執行作業的工作設定:
控制台
找出感興趣的工作。
按一下工作,即可顯示工作詳細資料頁面。
按一下「編輯」按鈕前面的展開箭頭,然後點選「使用覆寫執行」,即可顯示「使用覆寫執行工作」表單。
視需要變更這次執行的引數、環境變數、工作數量和/或工作逾時設定,然後按一下「執行」。
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
更改下列內容:
- ACCESS_TOKEN:帳戶的有效存取權杖,該帳戶具有執行工作覆寫的 IAM 權限。舉例來說,如果您已登入 gcloud,可以使用
gcloud auth print-access-token擷取存取權杖。在 Cloud Run 容器執行個體中,您可以使用容器執行個體中繼資料伺服器擷取存取權杖。 - JOB_NAME:工作名稱。
- ARGS:作業引數。
- KEY 和 VALUE 配對:環境變數。
- TASKS:工作數量。
- TIMEOUT:工作逾時。
- REGION:作業的 Google Cloud 區域。
- PROJECT_ID: Google Cloud 專案 ID。
取消工作執行作業
如要停止目前執行的 Cloud Run 工作,請使用取消功能。取消工作執行作業會停止目前的工作執行作業。已取消的執行作業狀態為「已取消」。您仍可查看執行作業,包括設定資料、記錄和監控資料。
取消工作執行作業不會退還工作執行期間的任何 Cloud Run 工作使用費用。
如要取消執行作業,請按照下列步驟操作:
控制台
按一下工作,開啟工作詳細資料窗格。
選取要取消的工作執行作業。
在「動作」選單下方,按一下省略號圖示,然後按一下「取消」。
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。
刪除工作執行作業
即使工作目前正在執行,您也可以刪除工作執行作業。刪除執行作業後,系統會停止執行作業。詳情請參閱「刪除工作執行作業」。
後續步驟
執行工作後,您可以執行下列操作: