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

如何通过Client SDK或API获取Google Cloud当前使用/计费报告/指标?

刚好我之前做过类似的需求,给你整理下用Google.Apis.Cloudbilling.v1在应用内查看Cloud Speech API费用的具体步骤,亲测能用:

实现应用内查看Cloud Speech API费用的步骤

1. 先搞定依赖和权限

  • 确保你安装的Google.Apis.Cloudbilling.v1 NuGet包是最新稳定版,避免踩旧版本的坑
  • 你的服务账号得有Billing Account Viewer(roles/billing.viewer)权限,不然读不到账单数据。去IAM控制台找到你的服务账号,给它添上这个权限,关联到对应的账单账户就行

2. 核心代码实现

第一步:初始化Cloud Billing客户端

这部分很省心,因为你已经配置了GOOGLE_APPLICATION_CREDENTIALS,客户端会自动读取:

using Google.Apis.Cloudbilling.v1;
using Google.Apis.Auth.OAuth2;
using Google.Apis.Services;
using Google.Apis.Cloudbilling.v1.Data;

// 自动读取环境变量里的凭证,不用手动写路径
var credential = GoogleCredential.GetApplicationDefault()
    .CreateScoped(CloudbillingService.Scope.CloudPlatform);

var billingService = new CloudbillingService(new BaseClientService.Initializer
{
    HttpClientInitializer = credential,
    ApplicationName = "你的应用名称" // 随便填个标识就行
});

第二步:获取项目关联的账单账户ID

要查费用得先知道项目绑定的账单账户,用这段代码就能拿到:

// 替换成你自己的Google Cloud项目ID
string projectId = "your-project-id";

var billingInfoRequest = billingService.Projects.GetBillingInfo($"projects/{projectId}");
var billingInfo = billingInfoRequest.Execute();

// 拿到账单账户ID,格式是 billingAccounts/XXXXXX
string billingAccountId = billingInfo.BillingAccountName;

第三步:查询Cloud Speech API的专属费用

这里可以指定时间范围,还能过滤只看Speech API的费用,避免拿到所有服务的数据:

var costsRequest = billingService.BillingAccounts.Costs.List(billingAccountId);

// 关键过滤:只取Cloud Speech API的费用,服务代码是 speech.googleapis.com
costsRequest.Filter = "service.id = 'speech.googleapis.com'";

// 比如查过去30天的费用,时间格式要符合ISO 8601
DateTime endTime = DateTime.UtcNow;
DateTime startTime = endTime.AddDays(-30);
costsRequest.TimePeriodStartTime = startTime.ToString("yyyy-MM-dd'T'HH:mm:ss'Z'");
costsRequest.TimePeriodEndTime = endTime.ToString("yyyy-MM-dd'T'HH:mm:ss'Z'");

// 执行请求拿到费用列表
var costList = costsRequest.Execute();

// 遍历输出或者处理数据
foreach (var cost in costList.Costs)
{
    Console.WriteLine($"时间段: {cost.StartTime}");
    Console.WriteLine($"服务名称: {cost.Service.DisplayName}");
    Console.WriteLine($"产生费用: {cost.CostAmount.CurrencyCode} {cost.CostAmount.Value}");
    Console.WriteLine($"使用量: {cost.UsageAmount.Value} {cost.UsageUnit}");
    Console.WriteLine("---");
}

3. 几个要注意的坑

  • 费用数据不是实时的,一般会有几个小时到24小时的延迟,刚调用的Speech服务可能不会马上出现在结果里
  • 如果碰到403权限错误,先检查服务账号的Billing Account Viewer权限有没有加对,账单账户是不是项目绑定的那个
  • 要是想更精细地过滤(比如按地区、具体收费项),可以在Filter里加更多条件,比如sku.id = '对应的SKU ID',SKU ID可以去控制台账单详情里找

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:33:42