如何使用Google Cloud Billing APIs计算及查询累计账单费用?
嘿,我来帮你梳理下Google Cloud Billing APIs相关的用法,刚好对这块比较熟~
直接获取指定计费账户的累计/预计账单金额
其实有个非常直接的API可以满足需求——billingAccounts.spendingInfo.get,它能直接返回指定计费账户当前周期的累计消费金额和预计最终账单金额,完全不用自己组合计算。
调用示例(curl)
curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ "https://cloudbilling.googleapis.com/v1/billingAccounts/{YOUR_BILLING_ACCOUNT_ID}/spendingInfo"
这里的YOUR_BILLING_ACCOUNT_ID是你的计费账户ID,格式一般是012345-ABCDEF-678901。
返回结果示例
{ "name": "billingAccounts/012345-ABCDEF-678901/spendingInfo", "currentSpend": { "currencyCode": "USD", "units": "120", "nanos": 750000000 // 对应0.75美元,累计总消费为120.75美元 }, "forecastedSpend": { "currencyCode": "USD", "units": "180", "nanos": 0 }, "billingCycleDisplayName": "October 2024" }
返回里的currentSpend就是当前周期的累计消费,forecastedSpend是Google根据当前使用趋势预测的最终账单金额。
组合调用自定义计算费用的方案
如果需要更细粒度的费用拆解(比如按项目、服务、SKU拆分,或者自定义维度计算),可以用两个API组合实现:
1. 获取使用数据
用billingAccounts.usageReports.list API,获取指定时间范围内每个SKU的使用量。你可以过滤时间、项目、服务等维度,比如查询某一天的使用数据:
curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ "https://cloudbilling.googleapis.com/v1/billingAccounts/{YOUR_BILLING_ACCOUNT_ID}/usageReports?date=2024-10-15"
返回结果里会包含每个SKU的usageAmount(使用量)和unit(单位,比如小时、GB)。
2. 获取定价数据
用services.skus.list API,获取对应服务的SKU定价信息。比如查询Compute Engine的所有SKU定价:
curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ "https://cloudbilling.googleapis.com/v1/services/compute.googleapis.com/skus"
返回里的pricingInfo会包含该SKU的单价、计费模式(按需/预留/折扣)等信息。
3. 自行计算费用
把每个SKU的使用量乘以对应的单价即可,注意要匹配正确的计费模式(比如预留实例的价格和按需不同),还有货币单位的转换。
一些关键注意事项
- 权限要求:不管用哪个API,调用者都需要被分配
roles/billing.viewer角色(或更高权限如roles/billing.admin),否则会被拒绝访问。 - 数据延迟:使用数据和预计费用通常有1-2小时的延迟,实时性要求极高的场景要考虑这一点。
- 历史周期查询:如果要查过去计费周期的累计费用,
spendingInfo就不够用了,这时可以用billingAccounts.costs.listAPI,指定时间范围来获取历史累计费用。
内容的提问来源于stack exchange,提问作者felisimo
相关产品推荐
相关产品推荐

