使用 Cloud Billing Budget API 設定支出上限預算

瞭解如何將幾個支出上限預算要求傳送至 Cloud Billing Budget API。

如需完整的方法清單,請參閱 REST API 參考文件。

事前準備

閱讀本指南之前,請先完成下列工作:

  1. 請參閱 Cloud Billing Budget API 總覽。
  2. 請參閱 Cloud Billing Budget API 先決條件。
  3. 執行設定步驟。

找出 Cloud Billing 帳戶 ID

每次呼叫 Cloud Billing Budget API 時,您都需要Cloud Billing 帳戶 ID。支出上限預算僅適用於第一方 Google Cloud 客戶和 Cloud Billing 帳戶。經銷商帳單帳戶不在適用範圍內。

  1. 前往 Google Cloud 控制台的「管理帳單帳戶」頁面。
  2. 在「您的帳單帳戶」分頁中,您會看到 Cloud Billing 帳戶的名稱和 ID 清單。找出您管理預算的帳戶的「帳戶 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 呼叫會恢復正常運作。

    • 手動解除支出上限:如果支出上限強制執行後,您需要在同一個預算週期內解除用量限制,可以編輯預算,手動解除支出上限。手動解除支出上限會產生下列結果:

      • 手動調高支出上限後,API 呼叫就會恢復正常運作。
      • 如果您手動將支出上限狀態設為 AWAITING_NEXT_PERIOD,支出上限就不會在預算週期的其餘時間內再次觸發,除非您隨後編輯預算,提高支出上限金額並將 inputState 設為 CONFIGURED。

    解除支出上限後,服務最多可能需要一小時才會完全恢復正常運作。

  • 自動重設支出上限預算:在下一個預算週期開始時 (通常是下個月的第一天),所有支出上限預算都會自動重設,將預估總支出金額設為零,並將支出上限狀態設為 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 服務的服務 ID AEFD-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 服務的服務 ID AEFD-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 回覆:

{}