本頁說明如何執行 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 控制台、gcloud CLI、用戶端程式庫或 REST API 執行工作。
控制台
如要執行工作,請按照下列步驟操作:
前往 Google Cloud 控制台的 Cloud Run「Jobs」頁面:
找到感興趣的工作。
按一下工作,即可顯示工作詳細資料頁面。
點選「Execute」。
gcloud
如要執行現有作業,請執行下列指令:
gcloud run jobs execute JOB
如要讓指令等待執行完成,請執行下列指令:
gcloud run jobs execute JOB --wait --region=REGION
如要在啟動執行作業後立即追蹤記錄,請執行下列指令:
gcloud beta run jobs execute JOB --tail --region=REGION
更改下列內容:
JOB:Cloud Run 工作名稱。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:run
更改下列內容:
ACCESS_TOKEN:帳戶的有效存取權杖,該帳戶具有執行作業的 IAM 權限。 舉例來說,如果您已登入 gcloud,可以使用gcloud auth print-access-token擷取存取權杖。在 Cloud Run 容器執行個體中,您可以使用容器執行個體中繼資料伺服器擷取存取權杖。PROJECT_ID: Google Cloud 專案 ID。REGION:作業的 Google Cloud 區域。JOB:Cloud Run 工作名稱。
立即執行工作
控制台
如要立即執行工作,請按照下列步驟操作:
前往 Google Cloud 控制台的 Cloud Run 頁面:
從 Cloud Run 導覽選單中選取「作業」:
如要建立新工作,請按一下「Deploy container」(部署容器),填寫初始工作設定頁面。
如要設定現有工作,請選取該工作,然後按一下「查看及編輯工作設定」。
前往頁面底部,然後勾選「Execute job immediately」(立即執行工作) 方塊,再建立或更新工作。
gcloud
建立或更新工作時,可以指定 --execute-now 標記。
如要建立工作,請執行下列指令:
gcloud run jobs create JOB \ --image IMAGE_URL \ --execute-now \ --region=REGION
如要更新 Job,請執行下列指令:
gcloud run jobs update JOB --execute-now --region=REGION
更改下列內容:
JOB:Cloud Run 工作名稱。IMAGE_URL:容器映像檔的參照,例如us-docker.pkg.dev/cloudrun/container/job:latest。REGION:可找到資源的區域。例如:europe-west1。
YAML
您可以將工作規格儲存在 YAML 檔案中,然後使用 gcloud CLI 部署。
如要建立新工作,請略過這個步驟。 如要更新現有工作,請下載其 YAML 設定:
gcloud run jobs describe JOB --format export > job.yaml
如以下所示設定
startExecutionToken屬性:apiVersion: run.googleapis.com/v2 kind: Job metadata: name: JOB spec: template: spec: template: spec: containers: - image: IMAGE_URL startExecutionToken: START_EXECUTION_SUFFIX
更改下列內容:
JOB:Cloud Run 工作名稱。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"
更改下列內容:
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:Cloud Run 工作名稱。
延後執行作業
如要停用立即執行功能,或將一般工作轉換為延遲工作,請參閱「延遲執行工作」。
覆寫特定執行的工作設定
執行工作時,您可以設定這些參數來啟動新的工作執行作業,藉此覆寫為工作設定的引數、環境變數、工作數量和工作逾時。您指定的參數只會影響這次執行,不會影響後續執行,因為基礎工作定義維持不變。
常見用途包括:
- 您要從程式碼以程式輔助方式執行作業,並想覆寫引數或環境變數,例如告知作業這次執行時的輸入資料位置。
- 您有一項工作,其中每個工作都只會處理一筆輸入資料。您想根據要處理的輸入數量,覆寫任務數量。
- 作業的執行時間會因執行次數而異。您想根據工作的預期執行時間,覆寫工作逾時設定。
您可以使用 Google Cloud 控制台、gcloud CLI、用戶端程式庫或 REST API,覆寫執行作業的作業設定:
控制台
前往 Google Cloud 控制台的 Cloud Run jobs 頁面:
按一下工作,開啟工作詳細資料窗格。
按一下「編輯」按鈕前面的擴充器箭頭,然後按一下「Execute with overrides」(使用覆寫執行),顯示「Execute job with overrides」(使用覆寫執行工作)表單。
設定這次執行的引數、環境變數、工作數量和工作逾時設定,然後按一下「執行」。
gcloud
使用以下指令:
gcloud run jobs execute JOB \ --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:run
更改下列內容:
ACCESS_TOKEN:帳戶的有效存取權杖,該帳戶具有執行工作覆寫的 IAM 權限。舉例來說,如果您已登入 gcloud,可以使用gcloud auth print-access-token擷取存取權杖。在 Cloud Run 容器執行個體中,您可以使用容器執行個體中繼資料伺服器擷取存取權杖。ARGS:作業引數。KEY和VALUE配對:環境變數。TASKS:工作數量。TIMEOUT:工作逾時。PROJECT_ID: Google Cloud 專案 ID。REGION:作業的 Google Cloud 區域。JOB:Cloud Run 工作名稱。
取消工作執行作業
如要停止目前執行的 Cloud Run 工作,請使用取消功能。取消工作執行作業會停止目前的工作執行作業。已取消的執行作業狀態為「已取消」。您仍可查看執行作業,包括設定資料、記錄和監控資料。
取消工作執行作業不會退還工作執行期間的任何 Cloud Run 工作費用。
如要取消執行作業,請使用 Google Cloud 控制台、gcloud CLI、用戶端程式庫或 REST API:
控制台
前往 Google Cloud 控制台的 Cloud Run jobs 頁面:
按一下工作,開啟工作詳細資料窗格。
選取要取消的工作執行作業。
在「動作」選單中,按一下省略號圖示,然後按一下「取消」。
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/executions/EXECUTION_NAME:cancel
更改下列內容:
ACCESS_TOKEN:帳戶的有效存取權杖,該帳戶具有取消工作執行的 IAM 權限。舉例來說,如果您已登入 gcloud,可以使用gcloud auth print-access-token擷取存取權杖。在 Cloud Run 容器執行個體中,您可以使用容器執行個體中繼資料伺服器擷取存取權杖。PROJECT_ID: Google Cloud 專案 ID。REGION:作業的 Google Cloud 區域。JOB:Cloud Run 工作名稱。EXECUTION_NAME:工作執行的名稱。
刪除工作執行作業
即使工作正在執行,您也可以刪除工作執行作業。如果刪除執行作業,系統就會停止執行作業。詳情請參閱「刪除工作執行作業」。
後續步驟
執行工作後,請按照下列步驟操作: