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

CloudRun容器调用Google Cloud Billing Python API出现404错误排查

解决Google Cloud Billing API调用404错误的排查步骤

你遇到的404错误大概率和资源可见性或权限绑定范围有关,以下是具体排查和配置步骤:

一、确认账单账号ID的准确性

检查你调用URL中的账单ID:01C8DC-336472-E177E1,确保它是正确的账单账号ID。可以通过两种方式验证:

  • 登录Google Cloud控制台,进入「账单」页面,查看目标账单的ID(格式为XXXXX-XXXXX-XXXXX)
  • 调用billingAccounts.list接口(GET https://cloudbilling.googleapis.com/v1/billingAccounts),返回的列表会包含你有权访问的所有账单账号,对比ID是否一致

二、确保角色绑定在正确的层级

Billing Access View角色必须直接绑定在目标账单账号上,而非项目层级:

  1. 打开Google Cloud控制台的「账单」页面,选择目标账单账号
  2. 进入「权限」标签页,点击「添加成员」
  3. 输入你的服务账号邮箱,选择Billing > Billing Access View角色,保存配置

注:如果角色仅绑定在项目上,服务账号无法访问账单账号资源,这是最常见的错误点。

三、验证权限与Token有效性

  1. 等待5-10分钟,Google Cloud的权限配置可能存在传播延迟
  2. 验证Access Token的权限范围:
    • 将你的token代入以下URL发起请求:
      GET https://www.googleapis.com/oauth2/v3/tokeninfo?access_token=YOUR_ACCESS_TOKEN
      
    • 检查返回的scope字段是否包含https://www.googleapis.com/auth/cloud-billing.readonly,确保权限范围正确

四、确认代码使用的服务账号匹配

检查代码中加载的SA凭证对应的邮箱,和你配置了Billing Access View角色的服务账号邮箱完全一致,避免误用其他SA的凭证。

额外建议:使用官方客户端库简化流程

自行实现JWT签名容易出错,推荐使用Google官方的google-cloud-billing客户端库,自动处理凭证与token逻辑:

from google.cloud import billing_v1
from google.oauth2 import service_account

def access_bills(sa_json_path):
    credentials = service_account.Credentials.from_service_account_file(
        sa_json_path,
        scopes=["https://www.googleapis.com/auth/cloud-billing.readonly"],
    )
    client = billing_v1.CloudBillingClient(credentials=credentials)
    
    billing_account_name = "billingAccounts/01C8DC-336472-E177E1"
    response = client.get_billing_account(name=billing_account_name)
    print(f"Billing account: {response.display_name}")
    return {
        'statusCode': 200,
        'body': f"Success: {response.display_name}"
    }

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 18:40:40