瞭解如何將幾個支出上限預算要求傳送至 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 控制台的「管理帳單帳戶」頁面。
- 在「您的帳單帳戶」分頁中,您會看到 Cloud Billing 帳戶的名稱和 ID 清單。找出您管理預算的帳戶的「帳戶 ID」值。

支出上限預算的重要概念和限制
支出上限預算會使用預估總費用觸發快訊並強制執行支出限制,封鎖用量和費用累積,直到解除支出上限為止。
支出上限預算欄位限制
當
spendCap
設定預算時,預算會套用嚴格的欄位限制。請參閱以下網頁的欄位層級註解:
Filters、
BudgetAmount、
ThresholdRule、
NotificationsRule、
和
OwnershipScope。
- billing-account-id:支出上限預算僅適用於第一方 Google Cloud 客戶和 Cloud Billing 帳戶。經銷商帳單帳戶不在適用範圍內。
BudgetFilters必須包含下列參數:- 支出上限預算僅限於範圍 (篩選) 設為單一 Google Cloud 專案和單一 符合資格的服務。
- 支出上限預算的預算週期時間範圍僅限於
CalendarPeriodMONTH。 - 支出上限的費用計算依據為總費用,不含節省金額和抵免額。您必須將
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)和佈建輸送量 (PT)等承諾使用合約涵蓋的用量。
- 系統會處理指定服務的任何進行中要求,並視情況收取費用。
- 支出上限不會暫停與永久資源 (例如運算和儲存服務) 相關聯的任何持續性固定用量,這些資源仍會保持啟用狀態並持續產生費用。
- 重要事項:預算處於強制執行狀態時,您無法編輯支出上限預算的設定或刪除預算。如要編輯或刪除強制執行的預算,請先手動解除支出上限。
解除強制執行的支出上限,即可還原服務和支出:強制執行支出上限後,指定專案中的特定服務會遭到封鎖,直到解除支出上限為止。解除支出上限的方式如下:
自動解除支出上限:系統會在下一個預算週期開始時 (通常是下個月的第一天),自動解除強制執行的支出上限。支出上限自動解除後,預算的支出金額會重設為零,支出上限狀態會重設為
CONFIGURED,指定服務也會解除封鎖,API 呼叫會恢復正常運作。手動解除支出上限:如果支出上限強制執行後,您需要在同一個預算週期內解除用量限制,可以編輯預算,手動解除支出上限。手動解除支出上限會產生下列結果:
解除支出上限後,服務最多可能需要一小時才會完全恢復正常運作。
自動重設支出上限預算:在下一個預算週期開始時 (通常是下個月的第一天),所有支出上限預算都會自動重設,將預估總支出金額設為零,並將支出上限狀態設為
CONFIGURED。
配額限制:每個 Cloud Billing 帳戶一次最多可連結數千個預算。如要瞭解目前的限制和其他資訊,請參閱「配額與限制」。
呼叫 API
下列範例說明如何將幾項要求傳送至 Cloud Billing Budget API,以管理支出上限預算。
設定支出上限預算
這個 API 方法會建立Cloud Billing 支出上限預算,並套用至單一專案和符合資格的服務。
REST
這個範例說明如何為特定專案的 Gemini API 服務建立支出上限預算。預算會 Google Cloud 限定 (篩選)為您指定的單一合格服務,並設定為每月預算金額 $100 美元。
使用任何要求資料之前,請先修改下列項目的值:
projects/budget-scope-project-id:您要設為預算範圍的 Google Cloud 專案 ID (budgetFilter)。services/eligible-service_id:要設為預算範圍的適用服務 ID (budgetFilter)。在範例中,我們使用 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:要設為預算範圍的適用服務 ID (budgetFilter)。在範例中,我們使用 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 回覆:
{}