服務的帳單設定

本頁面說明帳單設定,假設您使用預設的 Cloud Run 自動調整大小行為。如要瞭解使用手動資源調度時的其他注意事項,請參閱「使用手動資源調度時的計費行為」。

Cloud Run 服務有兩種計費設定:

  • 以要求為依據的計費 (預設):Cloud Run 執行個體只會在處理要求、啟動和關閉時產生費用。詳情請參閱「執行個體生命週期」一文。這項設定先前稱為「只在要求處理期間分配 CPU」

  • 以執行個體為依據的計費模式:即使沒有傳入要求,Cloud Run 執行個體的整個生命週期仍會收費。執行生命週期短的背景工作和其他非同步處理工作時,可以使用以執行個體為基礎的計費方式。這項設定先前稱為「隨時分配 CPU」。

如果您選擇以要求為依據的計費模式,系統就會按照個別要求收費,且只有在執行個體處理要求時才會收費。如果您選擇以執行個體為依據的計費模式,系統會針對執行個體的整個生命週期收費。詳情請參閱 Cloud Run 定價表

Recommender 會自動查看 Cloud Run 服務過去一個月收到的流量,並建議您改用以要求為準的計費方式 (如果費用較低),或改用以執行個體為準的計費方式

CPU 分配方式的影響

選取帳單設定會影響 CPU 的分配方式。

  • 採用以要求為依據的計費時,系統只會在要求處理期間分配 CPU。
  • 採用以執行個體為依據的計費模式時,系統會為整個容器執行個體生命週期分配 CPU。

如何選擇合適的帳單設定

選擇適合用途的帳單設定時,需要考量多項因素,例如流量模式、背景執行作業和費用,這些因素會在後續章節中說明。

流量模式注意事項

  • 如果流量不規則、突發或尖峰,建議採用以要求為依據的計費模式
  • 如果流量穩定且緩慢變化,建議採用以執行個體為單位的計費方式

背景執行注意事項

選取「以執行個體為依據的計費」後,即使在處理要求以外,系統也會分配 CPU,讓您在傳回回應後執行短暫背景工作和其他非同步處理工作。例如:

  • 利用 OpenTelemetry 等監控代理程式,這些代理程式可能會假設能夠在背景執行。
  • 使用 Go 的協同程式、Node.js 非同步、Java 執行緒和 Kotlin 協同程式。
  • 使用依賴內建排程/背景功能的應用程式架構。

閒置的執行個體 (包括使用最少量執行個體保持暖機狀態的執行個體) 隨時可以關閉。如果您需要在容器終止前完成未完成的工作,可以捕捉 SIGTERM,讓執行個體在停止前有 10 秒的寬限時間。

建議您使用 Cloud Tasks 執行非同步工作。Cloud Tasks 會自動重試失敗的任務,並支援長達 30 分鐘的執行時間。

費用考量

如果您使用以要求為依據的計費模式,在下列情況下,以執行個體為依據的計費模式可能更經濟實惠:

  • 您的 Cloud Run 服務以相當穩定的速度處理大量目前要求。
  • 查看執行個體計數指標時,您不會看到太多「閒置」執行個體。

您可以使用價格計算工具來估算費用差異。

自動調度資源的考量

Cloud Run 預設會自動調整容器執行個體數量。

如果服務設為以要求計費,Cloud Run 只會在處理要求時,根據 CPU 使用率自動調整執行個體數量。

如果服務設為以執行個體為依據的計費,Cloud Run 會根據容器執行個體的整個生命週期 CPU 使用率,自動調整執行個體數量,但在從零擴充和縮減時,系統只會使用要求。

如果您使用手動調度資源功能 (而非 Cloud Run 自動調度資源功能),請參閱手動調度資源,瞭解其他注意事項。

以執行個體為依據的計費考量

即使您將計費設定設為以執行個體為依據的計費,Cloud Run 的自動調整資源功能仍會生效,並在執行個體不需要處理傳入流量或要求以外的 CPU 使用率時終止執行個體。處理完要求後,執行個體不會閒置超過 15 分鐘,除非使用最少執行個體保持運作。

將以執行個體為依據的計費方式與最低執行個體數量結合,可讓多個執行個體持續運作並完整存取 CPU 資源,實現背景處理用途。使用這個模式時,即使服務在任何要求之外使用 CPU,Cloud Run 也會套用執行個體自動調整資源配置

如果您使用健康檢查探針,則必須為每個探針使用以執行個體為依據的計費模式。如需帳單詳細資料,請參閱容器健康檢查探針

必要的角色

如要取得設定及部署 Cloud Run 服務所需的權限,請要求管理員授予您下列 IAM 角色:

  • Cloud Run 服務中的 Cloud Run 開發人員 (roles/run.developer)
  • 服務身分中的「服務帳戶使用者」 (roles/iam.serviceAccountUser)

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

設定及更新帳單資訊

任何設定變更都會建立新的修訂版本。除非您明確做出更新,否則後續的修訂版本也會自動取得這個設定。

如果您選取以執行個體為依據的計費方式,則必須指定至少 512 MiB 的記憶體

您可以建立新服務部署新版本時,使用 Google Cloud 控制台、gcloud CLI 或 YAML 檔案變更帳單設定:

控制台

  1. 前往 Google Cloud 控制台的 Cloud Run:

    前往 Cloud Run

  2. 從選單中選取「Services」,然後按一下「Deploy container」,即可設定新服務。如果您要設定現有服務,請按一下該服務,然後點選「編輯並部署新修訂版本」

  3. 如果您要設定新服務,請填寫初始服務設定頁面。

  4. 在「帳單」下方選取帳單設定。選取以要求為依據的計費模式,讓系統只在處理要求期間向您收取費用。選取以執行個體為依據的計費模式,系統就會針對執行個體的整個生命週期收取費用。

  5. 按一下 [Create] (建立) 或 [Deploy] (部署)

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

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

    gcloud run services describe SERVICE --format export > service.yaml
  2. 更新 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 個半形字元
  3. 使用下列指令建立或更新服務:

    gcloud run services replace service.yaml

Terraform

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

將下列內容新增至 Terraform 設定中的 google_cloud_run_v2_service 資源:

resource "google_cloud_run_v2_service" "default" {
  name     = "cloudrun-service-cpu-allocation"
  location = "us-central1"

  deletion_protection = false # set to "true" in production

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"
      resources {
        # If true, garbage-collect CPU when once a request finishes
        cpu_idle = false
      }
    }
  }
}

查看帳單設定

如要查看 Cloud Run 服務目前的帳單設定,請按照下列步驟操作:

控制台

  1. 前往 Google Cloud 控制台的 Cloud Run:

    前往 Cloud Run

  2. 按一下您感興趣的服務,開啟「服務詳細資料」頁面。

  3. 按一下「Revisions」(修訂版本) 分頁標籤。

  4. 在右側的詳細資料面板中,帳單設定會列在「一般」分頁下方。

gcloud

  1. 使用下列指令:

    gcloud run services describe SERVICE
  2. 在傳回的設定中找出「Billing」設定。