本頁面說明帳單設定,假設您使用預設的 Cloud Run 自動調度資源行為。如果您使用手動調度資源,請參閱「使用手動調度資源時的計費行為」,瞭解其他注意事項。
Cloud Run 服務有兩種計費設定:
以要求為依據的計費模式 (預設):Cloud Run 服務執行個體只有在處理要求、啟動和關閉時才會收費。詳情請參閱執行個體生命週期。這項設定先前稱為「只在要求處理期間分配 CPU」。
以執行個體為依據的計費模式:Cloud Run 服務執行個體會根據每個執行個體的整個生命週期收費,即使沒有傳入要求也一樣。如要執行短期背景工作和其他非同步處理工作,依執行個體計費的方式可能較為實用。這項設定先前稱為「CPU always allocated」(一律分配 CPU)。
如果選擇以要求為依據的計費模式,系統就會按照個別要求收費,且只有在執行個體處理要求時才會收費。如果選擇以執行個體為依據的計費模式,系統會向您收取執行個體完整生命週期的費用。 詳情請參閱 Cloud Run 價目表。
建議工具會自動查看 Cloud Run 服務在過去一個月內收到的流量,並在依執行個體計費較便宜時,建議從依要求計費切換至依執行個體計費。
與 Cloud Run 服務不同,所有 Cloud Run 工作都採用以執行個體為基礎的計費方式。Cloud Run worker 集區和 Cloud Run 執行個體也會根據每個執行個體的整個生命週期,使用專屬的定價 SKU 計費。如要比較不同資源類型,請參閱「Cloud Run 資源比較」。CPU 分配模式的影響
選取計費設定會影響 CPU 的分配方式。
- 如果採用以要求為依據的計費模式,系統只會在處理要求時分配 CPU。
- 如果採用以執行個體為依據的計費模式,則會在整個容器執行個體生命週期分配 CPU。
預算支出上限
在 Cloud Billing 控制台設定 Cloud Billing 預算支出上限,或使用 Cloud Billing Budget API 以程式輔助方式設定,這些上限會自動套用至專案中的所有 Cloud Run 資源類型。
您可以直接在 Cloud Run 控制台總覽頁面,監控支出上限進度。達到支出上限時, Google Cloud 會暫停所有 Cloud Run 工作負載,避免下列 Cloud Run 資源產生更多費用:
- 服務:任何現有服務都無法提供流量,並會傳回
5xx錯誤。 - 工作:無法開始執行新工作,且進行中的工作無法完成。
- worker 集區:任何現有執行個體都會停止處理工作。
- 執行個體:所有執行中的執行個體都會關閉、新的執行個體或重新啟動作業無法啟動,且傳送至執行個體網址的要求會傳回
5xx錯誤。
如果超過支出上限,您會收到快訊通知,並在 Cloud Run 控制台看到違規處置橫幅。強制執行的支出上限會在每個月初 (即下一個帳單週期的第一天) 重設,解除工作負載封鎖狀態,並將支出金額設為零。如果超出支出上限,但想在每月重設前恢復作業,請在 Cloud Run 控制台總覽頁面手動調整或取消上限。
如何選擇合適的帳單設定
選擇適合您用途的計費設定時,需要考量多項因素,例如流量模式、背景執行和費用,各項因素將在下列各節中說明。
流量模式考量
- 如果傳入流量不穩定、突發或激增,建議採用以要求為依據的計費模式。
- 如果傳入流量穩定且變化緩慢,建議採用以執行個體為依據的計費模式。
背景執行注意事項
如果選取「以執行個體為依據的計費模式」,即使未處理要求,系統也會分配 CPU,讓您在傳回回應後執行短期背景工作和其他非同步處理工作。例如:
- 使用 OpenTelemetry 等監控代理程式,這些代理程式可能假設能在背景執行。
- 使用 Go 的 Goroutine、Node.js 非同步、Java 執行緒和 Kotlin 協同程式。
- 使用依賴內建排程或背景功能的應用程式架構。
閒置執行個體 (包括使用執行個體數量下限保持暖機狀態的執行個體) 隨時可能關閉。如需在容器終止前完成未完成的工作,可以擷取 SIGTERM,讓執行個體在停止前有 10 秒的寬限時間。
建議使用 Cloud Tasks 執行非同步工作。Cloud Tasks 會自動重試失敗的工作,且支援最長 30 分鐘的執行時間。
如果工作負載需要單一、長期運作的執行個體,且該執行個體會連續執行數小時或數天,而不會水平自動調度資源,請部署 Cloud Run 執行個體,而非服務。服務執行個體最多閒置 15 分鐘後就會縮減,但 Cloud Run 執行個體可不中斷地執行長達 7 天,並支援可設定的重新啟動政策。因此,Cloud Run 執行個體非常適合用於個人 AI 代理、有狀態工作流程引擎和遠端開發環境。詳情請參閱「Cloud Run 執行個體的使用時機」和「Cloud Run 執行個體生命週期」。
費用注意事項
如果您目前採用以要求為依據的計費模式,在下列情況下,以執行個體為依據的計費模式可能更經濟實惠:
- Cloud Run 服務目前正以相當穩定的速率處理大量要求。
- 查看執行個體數量指標時,不會看到許多「閒置」執行個體。
您可以使用Pricing Calculator估算費用差異。
如果您只需要單一持續執行的執行個體,不需要水平自動調度資源,那麼 Cloud Run 執行個體的費用可能會低於採用執行個體數量下限和依執行個體計費的服務。Cloud Run 執行個體有自己的定價 SKU,並支援具備高載能力的共用 CPU 模式 (基準 vCPU 為 6.25%,高載可達 100%),可降低大部分閒置單一工作負載的持續成本。
自動調度資源注意事項
Cloud Run 預設會自動調度容器執行個體數量。
如果服務設為依要求計費,Cloud Run 只會在處理要求時,根據 CPU 使用率自動調度執行個體數量。
如果服務設為以執行個體為依據計費,Cloud Run 會根據容器執行個體整個生命週期的 CPU 使用率,自動調度執行個體數量,但縮減至零和從零擴充時除外,此時只會使用要求。
如果您使用手動調度資源,而非 Cloud Run 自動調度資源功能,請參閱手動調度資源,瞭解其他注意事項。
以執行個體為依據的計費模式注意事項
即使計費設定設為以執行個體為依據的計費模式,Cloud Run 自動調度資源功能仍會生效,並可能在不需要處理傳入流量或要求以外的目前 CPU 使用率時,終止執行個體。執行個體在處理要求後,閒置時間不會超過 15 分鐘,除非使用執行個體數量下限保持啟用狀態。
將以執行個體為依據的計費方式與執行個體數量下限結合,可讓多個執行個體持續運作,並完整存取 CPU 資源,進而支援背景處理用途。使用這個模式時,即使服務在沒有要求的情況下使用 CPU,Cloud Run 也會套用執行個體自動調度資源。
如果背景或代理工作負載在尖峰負載期間,需要自動調度資源至多個執行個體,請使用採用執行個體計費方式和執行個體數量下限的服務。如需其他背景模式,請考慮使用下列 Cloud Run 資源:
- 單一執行個體、長時間執行的工作負載:如果只需要單一執行個體,且可直接控管啟動、停止和重新啟動生命週期,不需自動調度資源,請使用 Cloud Run 執行個體。
- 非 HTTP 提取式工作負載:針對不需要 HTTP 端點的持續背景消費者 (例如 Pub/Sub 或 Kafka worker),請使用 Cloud Run worker 集區。
如果使用健康狀態檢查探測,則必須針對每個探測採用以執行個體為準的計費方式。如需計費詳情,請參閱容器健康狀態檢查探測。
必要的角色
如要取得設定及部署 Cloud Run 服務所需的權限,請要求管理員授予您下列 IAM 角色:
- Cloud Run 服務的 Cloud Run 開發人員 (
roles/run.developer) - 服務身分的服務帳戶使用者 (
roles/iam.serviceAccountUser)
如果您是從原始碼部署服務或函式,則必須在專案和 Cloud Build 服務帳戶中,取得額外角色。
如要查看與 Cloud Run 相關聯的 IAM 角色和權限清單,請參閱「Cloud Run IAM 角色」和「Cloud Run IAM 權限」。如果 Cloud Run 服務與Google Cloud API (例如 Cloud 用戶端程式庫) 互動,請參閱服務身分設定指南。如要進一步瞭解如何授予角色,請參閱部署權限和管理存取權。
設定及更新帳單資訊
任何設定變更都會建立新的修訂版本。後續修訂版本也會自動套用這項設定,除非您明確變更。
如果選取以執行個體為依據的計費方式,則必須指定至少 512 MiB 的記憶體。
建立新服務或部署新修訂版本時,您可以使用 Google Cloud 控制台、gcloud CLI 或 YAML 檔案變更計費設定:
控制台
前往 Google Cloud 控制台的「Cloud Run」頁面:
從 Cloud Run 導覽選單中選取「Services」(服務),然後按一下「Deploy container」(部署容器),設定新服務。如要設定現有服務,請按一下該服務。
如要設定新服務,請填寫初始服務設定頁面。
如要設定現有服務,請按一下「Scaling」(資源調度) 分頁標籤。
在「Billing」(計費) 下方,選取「Request-based」(以要求為依據),系統就會只在處理要求期間向執行個體收費;選取「Instance-based」(以執行個體為依據),則會針對整個執行個體生命週期收費。
按一下「建立」,建立新服務。依序點選「查看差異並重新部署」和「部署變更」,即可更新現有服務。
gcloud
您可以更新帳單設定。 如要為特定服務設定以執行個體為依據的計費模式,請按照下列步驟操作:
gcloud run services update SERVICE --no-cpu-throttling
將 SERVICE 改為您的服務名稱。
如要設定以要求為依據的計費模式,請按照下列步驟操作:
gcloud run services update SERVICE --cpu-throttling
您也可以在部署期間調整帳單設定。如要將帳單設定設為「以執行個體為依據」計費:
gcloud run deploy --image IMAGE_URL --no-cpu-throttling
如要將帳單設定設為「以要求為依據」計費:
gcloud run deploy --image IMAGE_URL --cpu-throttling
將 IMAGE_URL 替換為容器映像檔的參照,例如 us-docker.pkg.dev/cloudrun/container/hello:latest。如果使用 Artifact Registry,則必須預先建立存放區 REPO_NAME。網址格式為 LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG。
YAML
如果您要建立新服務,請略過這個步驟。如要更新現有服務,請下載其 YAML 設定:
gcloud run services describe SERVICE --format export > service.yaml
更新
cpu屬性:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: annotations: run.googleapis.com/cpu-throttling: 'BOOLEAN' name: REVISION
更改下列內容:
- SERVICE:Cloud Run 服務名稱
- BOOLEAN:
true可設定以要求為依據的計費模式,false則可設定以執行個體為依據的計費模式。 REVISION:新的修訂版本名稱,或刪除現有名稱。如果您提供新的修訂版本名稱,則必須符合下列條件:- 開頭為「
SERVICE-」 - 只能使用小寫英文字母、數字和
- - 結尾不是
- - 不超過 63 個字元
- 開頭為「
使用下列指令建立或更新服務:
gcloud run services replace service.yaml
gcloud run services replace指令預設會使用service.yaml檔案 (如有)。
Terraform
如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。
在 Terraform 設定中,將下列內容新增至google_cloud_run_v2_service 資源:查看帳單設定
如要查看 Cloud Run 服務目前的計費設定,請按照下列步驟操作:
控制台
前往 Google Cloud 控制台的 Cloud Run「Services」(服務) 頁面:
按一下服務,開啟「Service details」(服務詳細資料) 頁面。
按一下「Scaling」(資源調度) 分頁標籤,找出「Billing」(計費) 設定。
gcloud
執行下列指令,查看帳單設定:
gcloud run services describe SERVICE --format=yaml
在 YAML 輸出內容中,找出
run.googleapis.com/cpu-throttling設定。false值代表以執行個體為依據的計費模式,如果缺少這項設定,則代表以要求為依據的計費模式。