You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Cloud Function中获取Google Cloud项目的Budget ID以删除预算?

解决方案

要获取指定项目关联的预算ID并完成删除操作,你需要先列出计费账号下的所有预算,再筛选出绑定目标项目的预算、提取其ID后执行删除。以下是完整实现代码:

from google.cloud.billing import budgets_v1

# 替换为你的实际值
BILLING_ACCOUNT_ID = "XXXXXXX"
TARGET_PROJECT_ID = "your-target-project-id"

client = budgets_v1.BudgetServiceClient()

# 1. 列出当前计费账号下的所有预算
parent = f"BillingAccounts/{BILLING_ACCOUNT_ID}"
list_request = budgets_v1.ListBudgetsRequest(parent=parent)
budgets = client.list_budgets(request=list_request)

# 2. 筛选出关联目标项目的预算,提取预算ID
target_budget_id = None
for budget in budgets:
    # 预算的项目关联规则存储在budget_filter.projects中,格式为"projects/{项目ID}"
    project_full_id = f"projects/{TARGET_PROJECT_ID}"
    if project_full_id in budget.budget_filter.projects:
        # 从预算的name字段中提取ID,name格式为"BillingAccounts/xxx/budgets/yyy"
        target_budget_id = budget.name.split("/")[-1]
        break

if not target_budget_id:
    raise ValueError(f"未找到关联项目 {TARGET_PROJECT_ID} 的预算")

# 3. 执行删除预算操作
delete_name = f"BillingAccounts/{BILLING_ACCOUNT_ID}/budgets/{target_budget_id}"
delete_request = budgets_v1.DeleteBudgetRequest(name=delete_name)
client.delete_budget(request=delete_request)

关键说明

  • 权限要求:Cloud Function使用的服务账号需要拥有billing.budgets.list和billing.budgets.delete权限,可直接赋予Billing Budget Editor角色,或创建包含这两个权限的自定义角色。
  • 项目匹配逻辑:预算的项目关联信息存储在budget.budget_filter.projects中,格式为projects/{项目ID},需与目标项目的完整格式匹配。
  • 预算ID提取:每个预算的name字段包含完整资源路径,通过分割字符串取最后一段即可得到预算ID。

内容的提问来源于stack exchange,提问作者zorroemoji

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 05:03:25