瞭解如何向 Cloud Billing Budget API 傳送幾項支出上限預算要求。
如需完整的方法清單,請參閱 REST API 參考文件。
事前準備
閱讀本指南之前,請先完成下列工作:
- 請參閱「Cloud Billing Budget API 總覽」。
- 請參閱「Cloud Billing Budget API 必要條件」。
- 執行設定步驟。
找出 Cloud Billing 帳戶 ID
每次呼叫 Cloud Billing Budget API 時,都需要 Cloud Billing 帳戶 ID。支出上限預算僅限第一方Google Cloud 客戶和 Cloud Billing 帳戶。經銷商帳單帳戶不適用。
- 前往 Google Cloud 控制台的「管理帳單帳戶」頁面。
- 在「Your billing accounts」(您的帳單帳戶) 分頁中,您會看到 Cloud Billing 帳戶清單,其中列有名稱和 ID。找出管理預算的帳戶帳戶 ID 值。

支出上限預算的重要概念和限制
支出上限預算會根據預估總費用觸發快訊並強制執行支出限制,封鎖用量和費用累計,直到支出上限解除為止。
支出上限預算欄位限制
如果預算設有 spendCap,則會套用嚴格的欄位限制。請參閱 Filters、BudgetAmount、ThresholdRule、NotificationsRule 和 OwnershipScope 的欄位層級註解。
- billing-account-id:支出上限預算僅限第一方Google Cloud 客戶和 Cloud Billing 帳戶。經銷商帳單帳戶不在範圍內。
BudgetFilters必須包含下列參數:- 支出上限預算僅限於範圍 (篩選條件) 為單一 Google Cloud 專案和單一 符合條件的服務。
- 支出上限預算的預算週期日期範圍,僅限
MONTH的CalendarPeriod。 - 支出上限的費用計算方式是以總費用為準,不含節省金額和抵免額。您必須將
creditTypesTreatment設為EXCLUDE_ALL_CREDITS。 - 支出上限不支援其他預算篩選條件,且必須留空,包括
resourceAncestors、credit_types、subaccounts和labels。
BudgetAmount必須使用specifiedAmount。輸入時,currencyCode為選填。如果在建立預算時指定,貨幣代碼必須與 Cloud Billing 帳戶的貨幣相符。currencyCode會在輸出內容中提供。ThresholdRules必須包含三個規則,thresholdPercent值分別為0.5、0.8和1.0(50%、80% 和 100%),且spendBasis設為CURRENT_SPEND或BASIS_UNSPECIFIED(支出上限不支援FORECASTED_SPEND)。NotificationsRule必須將enableProjectLevelRecipients設為true。不支援所有其他NotificationsRule參數。OwnershipScope必須設為OWNERSHIP_SCOPE_UNSPECIFIED或ALL_USERS(支出上限不支援BILLING_ACCOUNT)。建立支出上限預算時,
inputState參數必須設為CONFIGURED。
支出上限預算如何協助您控管支出
使用預估費用加快支出計算:為加快支出上限金額的強制執行速度,支出上限預算會使用預估總費用來觸發快訊並強制執行支出上限。預估費用是根據服務的定價計算,不含節省的金額和抵免額。
觸發支出上限時,自動暫停使用並停止累計費用:在指定專案中,如果特定服務的預估總使用費用超出預算目標金額,就會觸發支出上限,並在預算週期的剩餘時間內強制執行。在預算中,
outputState參數設為ENFORCED。支出上限生效時,適用下列規定:- 指定專案中特定服務的所有「新」用量都會暫停,包括隨選、即付即用用量,以及承諾使用折扣 (CUD) 等承諾使用合約涵蓋的用量。
- 指定服務中任何執行中的要求都會處理完畢,並依適用情況收取費用。
- 支出上限不會暫停與永久資源 (例如運算和儲存服務) 相關的任何持續固定用量,這些資源會保持啟用狀態並繼續產生費用。
- 重要事項:在強制執行狀態下,您無法編輯支出上限預算的設定,也無法刪除預算。如要編輯或刪除已強制執行的預算,請先手動解除支出上限。
解除強制執行的支出上限,恢復服務和支出:強制執行支出上限後,指定專案中的特定服務會遭到封鎖,直到解除支出上限為止。您可以透過下列方式解除支出上限:
自動解除支出上限:強制執行的支出上限會在下一個預算週期開始時 (通常是下個月的第一天) 自動解除。支出上限自動解除後,預算的支出金額會重設為零,支出上限狀態會重設為
CONFIGURED,指定的服務也會解除封鎖,API 呼叫會恢復正常運作。手動解除支出上限:如要在強制執行支出上限的預算週期內,解除用量限制,可以編輯預算,手動解除支出上限。手動解除支出上限會產生下列結果:
解除支出上限後,服務最多可能需要一小時,才會完全恢復正常運作。
自動重設支出上限預算:在下一個預算週期開始時 (通常是下個月的第一天),所有支出上限預算都會自動重設,將預估總支出金額設為零,並將支出上限狀態設為
CONFIGURED。
配額限制:每個 Cloud Billing 帳戶一次可連結數千個預算。如要瞭解目前的限制和更多資訊,請參閱「配額與限制」。
呼叫 API
下列範例說明如何向 Cloud Billing Budget API 傳送幾項要求,管理支出上限預算。
建立支出上限預算
這個 API 方法會建立 Cloud Billing 支出上限預算,並套用至單一專案和符合資格的服務。
REST
這個範例說明如何建立支出上限預算,用於特定專案中的 Gemini API 服務。預算 範圍 (篩選條件) 設為您指定的單一 Google Cloud 專案、單一 合格服務,以及 每月預算金額 $100 美元。
使用任何要求資料之前,請先修改下列項目的值:
projects/budget-scope-project-id:要設為預算範圍 (budgetFilter) 的 Google Cloud 專案 ID。services/eligible-service_id:您要設為預算範圍 (budgetFilter) 的合格服務 ID 之一。在範例中,我們使用 Gemini API 服務的服務 IDAEFD-7695-64FA。- billing-account-id:這項預算適用的 Cloud Billing 帳戶 ID。支出上限預算僅限第一方 Google Cloud 客戶和 Cloud Billing 帳戶使用。經銷商帳單帳戶不在範圍內。
- api-user-project-id:已啟用 Cloud Billing Budget API 的 Google Cloud 專案。
HTTP 方法和網址:
POST https://billingbudgets.googleapis.com/v1/billingAccounts/billing-account-id/budgets
JSON 要求主體:
{
"displayName": "My Gemini API Spend Cap",
"budgetFilter": {
"projects": [
"projects/budget-scope-project-id"
],
"services": [
"services/AEFD-7695-64FA"
],
"creditTypesTreatment": "EXCLUDE_ALL_CREDITS",
"calendarPeriod": "MONTH"
},
"amount": {
"specifiedAmount": {
"units": "100",
"nanos": 0
}
},
"thresholdRules": [
{ "thresholdPercent": 0.5 },
{ "thresholdPercent": 0.8 },
{ "thresholdPercent": 1.0 }
],
"notificationsRule": {
"enableProjectLevelRecipients": true
},
"spendCap": {
"inputState": "CONFIGURED"
}
}
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
{
"name": "billingAccounts/000000-111111-222222/budgets/33333333-4444-5555-6666-777777777777",
"displayName": "My Gemini API Spend Cap",
"budgetFilter": {
"projects": [
"projects/123456789"
],
"services": [
"services/AEFD-7695-64FA"
],
"creditTypesTreatment": "EXCLUDE_ALL_CREDITS",
"calendarPeriod": "MONTH"
},
"amount": {
"specifiedAmount": {
"currencyCode": "USD",
"units": "100"
}
},
"thresholdRules": [
{
"thresholdPercent": 0.5,
"spendBasis": "CURRENT_SPEND"
},
{
"thresholdPercent": 0.8,
"spendBasis": "CURRENT_SPEND"
},
{
"thresholdPercent": 1,
"spendBasis": "CURRENT_SPEND"
}
],
"notificationsRule": {
"enableProjectLevelRecipients": true
},
"etag": "1790365289674138",
"spendCap": {
"outputState": "CONFIGURED"
}
}
使用 PATCH 暫停支出上限
使用 PATCH API 方法修改現有的 Cloud Billing 支出上限預算,手動解除強制執行的支出上限。
REST
這個範例說明如何更新
SpendCap.inputState 參數為 AWAITING_NEXT_PERIOD,手動解除現有預算的 ENFORCED 支出上限。
重要事項:如果 spend_cap.output_state 為 ENFORCED,您必須先傳送 UpdateBudget 要求修改 spend_cap.input_state,例如將 input_state 設為 AWAITING_NEXT_PERIOD,這樣才能解除支出上限。如果您在預算處於強制執行狀態時嘗試修改任何其他預算欄位,更新要求會失敗,並傳回 FAILED_PRECONDITION。
如要呼叫這個方法,您需要提供要更新的預算 budget-id。建立預算時,您可以從 createBudget 輸出內容取得預算 ID;如果列出所有預算,則可從 listBudgets 輸出內容取得預算 ID。
使用任何要求資料之前,請先修改下列項目的值:
- billing-account-id:這項預算適用的 Cloud Billing 帳戶 ID。支出上限預算僅限第一方 Google Cloud 客戶和 Cloud Billing 帳戶使用。經銷商帳單帳戶不在範圍內。
- budget-id:要更新的預算 ID。
- api-user-project-id:已啟用 Cloud Billing Budget API 的 Google Cloud 專案。
HTTP 方法和網址:
PATCH https://billingbudgets.googleapis.com/v1/billingAccounts/billing-account-id/budgets/budget-id?updateMask=spendCap.inputState
JSON 要求主體:
{
"spendCap": {
"inputState": "AWAITING_NEXT_PERIOD"
}
}
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
{
"name": "billingAccounts/000000-111111-222222/budgets/33333333-4444-5555-6666-777777777777",
"displayName": "My Gemini API Spend Cap",
"budgetFilter": {
"projects": [
"projects/123456789"
],
"services": [
"services/AEFD-7695-64FA"
],
"creditTypesTreatment": "EXCLUDE_ALL_CREDITS",
"calendarPeriod": "MONTH"
},
"amount": {
"specifiedAmount": {
"currencyCode": "USD",
"units": "100"
}
},
"thresholdRules": [
{
"thresholdPercent": 0.5,
"spendBasis": "CURRENT_SPEND"
},
{
"thresholdPercent": 0.8,
"spendBasis": "CURRENT_SPEND"
},
{
"thresholdPercent": 1,
"spendBasis": "CURRENT_SPEND"
}
],
"notificationsRule": {
"enableProjectLevelRecipients": true
},
"etag": "1790365289674138",
"spendCap": {
"outputState": "AWAITING_NEXT_PERIOD",
"reconciling": true
}
}
使用 PATCH 更新支出上限預算
使用這個 API 方法修改現有的 Cloud Billing 支出上限預算,變更預算金額和預算篩選器 (預算範圍)。
REST
這個範例說明如何更新現有的支出上限預算,以變更
預算金額。如果
支出上限狀態為 AWAITING_NEXT_PERIOD,這個範例也會示範如何將
SpendCap.inputState 參數更新為 CONFIGURED,重設已解除的支出上限。
如要呼叫這個方法,您需要提供要更新的預算 budget-id。建立預算時,您可以從 createBudget 輸出內容取得預算 ID;如果列出所有預算,則可從 listBudgets 輸出內容取得預算 ID。
使用任何要求資料之前,請先修改下列項目的值:
projects/budget-scope-project-id:要設為預算範圍 (budgetFilter) 的 Google Cloud 專案 ID。services/eligible-service_id:您要設為預算範圍 (budgetFilter) 的合格服務 ID 之一。在範例中,我們使用 Gemini API 服務的服務 IDAEFD-7695-64FA。- billing-account-id:這項預算適用的 Cloud Billing 帳戶 ID。支出上限預算僅限第一方 Google Cloud 客戶和 Cloud Billing 帳戶使用。經銷商帳單帳戶不在範圍內。
- budget-id:要更新的預算 ID。
- api-user-project-id:已啟用 Cloud Billing Budget API 的 Google Cloud 專案。
HTTP 方法和網址:
PATCH https://billingbudgets.googleapis.com/v1/billingAccounts/billing-account-id/budgets/budget-id?updateMask=amount.specifiedAmount,spendCap.inputState
JSON 要求主體:
{
"displayName": "My Gemini API Spend Cap",
"budgetFilter": {
"projects": [
"projects/budget-scope-project-id"
],
"services": [
"services/AEFD-7695-64FA"
],
"creditTypesTreatment": "EXCLUDE_ALL_CREDITS",
"calendarPeriod": "MONTH"
},
"amount": {
"specifiedAmount": {
"units": "500",
"nanos": 0
}
},
"thresholdRules": [
{ "thresholdPercent": 0.5 },
{ "thresholdPercent": 0.8 },
{ "thresholdPercent": 1.0 }
],
"notificationsRule": {
"enableProjectLevelRecipients": true
},
"spendCap": {
"inputState": "CONFIGURED"
}
}
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
{
"name": "billingAccounts/000000-111111-222222/budgets/33333333-4444-5555-6666-777777777777",
"displayName": "My Gemini API Spend Cap",
"budgetFilter": {
"projects": [
"projects/123456789"
],
"services": [
"services/AEFD-7695-64FA"
],
"creditTypesTreatment": "EXCLUDE_ALL_CREDITS",
"calendarPeriod": "MONTH"
},
"amount": {
"specifiedAmount": {
"currencyCode": "USD",
"units": "500"
}
},
"thresholdRules": [
{
"thresholdPercent": 0.5,
"spendBasis": "CURRENT_SPEND"
},
{
"thresholdPercent": 0.8,
"spendBasis": "CURRENT_SPEND"
},
{
"thresholdPercent": 1,
"spendBasis": "CURRENT_SPEND"
}
],
"notificationsRule": {
"enableProjectLevelRecipients": true
},
"etag": "1790365289674138",
"spendCap": {
"outputState": "CONFIGURED"
}
}
列出預算
這個 API 方法會列出特定 Cloud Billing 帳戶的所有可用預算。
REST
使用任何要求資料之前,請先修改下列項目的值:
- billing-account-id:預算適用的 Cloud Billing 帳戶 ID。支出上限預算僅限第一方 Google Cloud 客戶和 Cloud Billing 帳戶使用。經銷商帳單帳戶不在範圍內。
- project-id:已啟用 Cloud Billing Budget API 的 Google Cloud 專案。
HTTP 方法和網址:
GET https://billingbudgets.googleapis.com/v1/billingAccounts/billing-account-id/budgets
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
{
"budgets": [
{
"name": "billingAccounts/000000-111111-222222/budgets/33333333-4444-5555-6666-777777777777",
"displayName": "Gemini API Spend Cap in My Project",
"budgetFilter": {
"projects": [
"projects/987654321"
],
"services": [
"services/AEFD-7695-64FA"
],
"creditTypesTreatment": "EXCLUDE_ALL_CREDITS",
"calendarPeriod": "MONTH"
},
"amount": {
"specifiedAmount": {
"currencyCode": "USD",
"units": "500"
}
},
"thresholdRules": [
{
"thresholdPercent": 0.5,
"spendBasis": "CURRENT_SPEND"
},
{
"thresholdPercent": 0.8,
"spendBasis": "CURRENT_SPEND"
},
{
"thresholdPercent": 1,
"spendBasis": "CURRENT_SPEND"
}
],
"notificationsRule": {
"enableProjectLevelRecipients": true
},
"allUpdatesRule": {},
"etag": "17fc365289f74138c",
"spendCap": {
"outputState": "ENFORCED"
}
}
]
}
取得預算
這個 API 方法會取得特定預算的詳細資料。
REST
如要呼叫這個方法,您需要提供要更新的預算 budget-id。建立預算時,您可以從 createBudget 輸出內容取得預算 ID;如果列出所有預算,則可從 listBudgets 輸出內容取得預算 ID。
使用任何要求資料之前,請先修改下列項目的值:
- billing-account-id:這項預算適用的 Cloud Billing 帳戶 ID。支出上限預算僅限第一方 Google Cloud 客戶和 Cloud Billing 帳戶使用。經銷商帳單帳戶不在範圍內。
- budget-id:要取得的預算 ID。
- project-id:已啟用 Cloud Billing Budget API 的 Google Cloud 專案。
HTTP 方法和網址:
GET https://billingbudgets.googleapis.com/v1/billingAccounts/billing-account-id/budgets/budget-id
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
{
"name": "billingAccounts/000000-111111-222222/budgets/33333333-4444-5555-6666-777777777777",
"displayName": "Cloud Run Spend Cap in My Project",
"budgetFilter": {
"projects": [
"projects/987654321"
],
"services": [
"services/152E-C115-5142"
],
"creditTypesTreatment": "EXCLUDE_ALL_CREDITS",
"calendarPeriod": "MONTH"
},
"amount": {
"specifiedAmount": {
"currencyCode": "USD",
"units": "450"
}
},
"thresholdRules": [
{
"thresholdPercent": 0.5,
"spendBasis": "CURRENT_SPEND"
},
{
"thresholdPercent": 0.8,
"spendBasis": "CURRENT_SPEND"
},
{
"thresholdPercent": 1,
"spendBasis": "CURRENT_SPEND"
}
],
"notificationsRule": {
"enableProjectLevelRecipients": true
},
"allUpdatesRule": {},
"etag": "c9d6c011f6fa6b5c",
"spendCap": {
"outputState": "CONFIGURED"
}
}
刪除預算
使用這個 API 方法刪除現有的 Cloud Billing 預算。
REST
如要呼叫這個方法,您需要提供要更新的預算 budget-id。建立預算時,您可以從 createBudget 輸出內容取得預算 ID;如果列出所有預算,則可從 listBudgets 輸出內容取得預算 ID。
使用任何要求資料之前,請先修改下列項目的值:
- billing-account-id:這項預算適用的 Cloud Billing 帳戶 ID。
- budget-id:要刪除的預算 ID。
- project-id:已啟用 Cloud Billing Budget API 的 Google Cloud 專案。
HTTP 方法和網址:
DELETE https://billingbudgets.googleapis.com/v1/billingAccounts/billing-account-id/budgets/budget-id
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
{}