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

Cloud Function测试正常,生产环境经Pub/Sub触发无法访问GCS Bucket

问题分析与解决

问题现象

Cloud Function在源代码编辑器测试、Cloud Shell测试时均可正常创建Pandas DataFrame并推送至GCS Bucket,但部署后通过Pub/Sub触发时抛出403错误:

google.api_core.exceptions.Forbidden: 403 GET https://storage.googleapis.com/storage/v1/b/my_bucket?projection=noAcl&prettyPrint=false: [my-project]@appspot.gserviceaccount.com does not have storage.buckets.get access to the Google Cloud Storage bucket. Permission 'storage.buckets.get' denied on resource (or it may not exist).

已确认测试与生产环境的Storage Client scope一致,且已为服务账号授予对应权限,但仅生产环境触发失败。

可能的原因及解决方法

1. 服务账号权限未正确配置或未生效

  • 确认授权对象:检查GCS Bucket的权限列表,确保[my-project]@appspot.gserviceaccount.com确实被添加,而非误授权给其他账号(比如个人用户账号)。
  • 检查权限角色:该服务账号需要拥有包含storage.buckets.get权限的角色,推荐使用:
    • Storage Admin:全量存储权限(适合调试)
    • Storage Object Creator:允许创建/上传对象,同时包含bucket的基础访问权限
  • 等待权限生效:权限变更后可能需要1-5分钟才能生效,不要立即测试。

2. Cloud Function部署时使用了错误的服务账号

  • 打开Cloud Functions控制台,进入目标函数的「详情」页面,查看「服务账号」字段,确认是[my-project]@appspot.gserviceaccount.com。
  • 如果显示其他账号,需:
    • 给当前使用的服务账号添加GCS访问权限;
    • 或重新部署函数时指定正确的服务账号:
      gcloud functions deploy hello_pubsub --trigger-topic YOUR_TOPIC_NAME --service-account [my-project]@appspot.gserviceaccount.com
      

3. 组织级政策限制了服务账号访问

如果你的项目属于企业组织,可能存在组织政策限制了存储资源的访问:

  • 进入IAM & Admin -> 组织政策,搜索「Storage Bucket Access」相关政策,确认没有禁止[my-project]@appspot.gserviceaccount.com访问GCS资源。

4. 显式指定项目ID初始化Storage Client

默认的storage.Client()可能在某些环境下隐式使用了错误的项目,导致跨项目权限问题:

  • 修改代码中的客户端初始化代码,显式指定项目ID:
    GCS_CLIENT = storage.Client(project="your-project-id") # 替换为你的项目ID
    

验证步骤

可以在Cloud Shell中模拟服务账号的权限,快速定位问题:

  1. 下载服务账号的密钥文件(IAM -> 服务账号 -> 密钥 -> 添加密钥)
  2. 激活服务账号:
    gcloud auth activate-service-account [my-project]@appspot.gserviceaccount.com --key-file=your-key-file.json
    
  3. 尝试访问Bucket:
    gsutil ls gs://my_bucket
    

如果此命令报403,说明权限配置确实有问题;如果能成功访问,需检查Cloud Function的部署配置。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 20:13:19