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

已启用GCP Billing仍遇GCS上传403禁用账户错误求助

GCS文件上传403错误排查方案

问题场景

我用以下Python代码上传文件到Google Cloud Storage:

def upload_to_gcs(bucket_name, local_file_path, gcs_file_name):
    """
    Uploads local files to Google Cloud Storage (GCS).

    :param bucket_name: string
    :param local_file_path: string
    :param gcs_file_name: string
    :return: None
    """
    client = storage.Client()
    bucket = client.bucket(bucket_name)
    blob = bucket.blob(gcs_file_name)
    blob.upload_from_filename(local_file_path)

运行时触发403 Forbidden错误:

Exception has occurred: Forbidden
403 POST https://storage.googleapis.com/upload/storage/v1/b/monzo/o?uploadType=multipart: {
  "error": {
    "code": 403,
    "message": "The billing account for the owning project is disabled in state closed",
    "errors": [
      {
        "message": "The billing account for the owning project is disabled in state closed",
        "domain": "global",
        "reason": "accountDisabled",
        "locationType": "header",
        "location": "Authorization"
      }
    ]
  }
}

已验证信息

  • 项目miguel-377315的GCP账单已启用,Cloud Shell查询结果:
miguel@cloudshell:~$ gcloud beta billing projects describe miguel-377315
billingAccountName: billingAccounts/0193C3-8A2BD3-44C7DB
billingEnabled: true
name: projects/miguel-377315/billingInfo
projectId: miguel-377315
  • 已尝试Stack Overflow同类问题的所有解决方案,联系谷歌客服未获有效帮助。

排查思路

  • 确认Bucket所属项目:错误提示中的Bucket是monzo,先核实该Bucket实际所属的GCP项目,有可能代码指定的Bucket并不属于miguel-377315,而是归属另一个账单已关闭的项目。可在GCS控制台搜索Bucket名称查看所属项目信息。
  • 锁定身份验证的项目/账号:代码中storage.Client()默认初始化会读取本地认证凭据(环境变量、gcloud默认配置、服务账号密钥文件等)。确认代码运行环境的默认项目是否为miguel-377315,可在代码中显式指定项目ID:
    client = storage.Client(project="miguel-377315")
    
    同时检查本地gcloud配置:运行gcloud config get-value project,查看输出是否为miguel-377315,若不是则切换项目后重新测试。
  • 检查服务账号的权限与账单关联:如果代码使用服务账号密钥,确认该服务账号所属项目是否绑定有效账单账号,且服务账号拥有storage.objects.create权限。另外排查服务账号是否被限制了账单相关操作权限。
  • 深挖账单账号状态细节:虽然billingEnabled显示为true,但需进入GCP账单控制台,查看对应账单账号0193C3-8A2BD3-44C7DB的状态,是否存在未结清账单、支付方式失效、账号处于暂停/限制等隐性状态。
  • 核查Bucket访问控制策略:确认Bucket的IAM权限是否允许当前认证账号上传文件,比如是否分配了Storage Object Creator或Storage Admin角色。同时检查Bucket是否设置了强制组织政策限制上传操作。
  • 测试基础API连通性:用gcloud命令直接测试上传文件到目标Bucket:
    echo "test content" > test.txt
    gsutil cp test.txt gs://monzo/test.txt
    
    若同样报错,说明问题出在项目/Bucket配置上;若成功,则说明代码的认证方式存在问题,需排查代码使用的凭据是否正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 00:07:42