使用REST API写入Google Cloud Storage新桶时触发“未启用计费”403错误
这种情况确实挺闹心的——明明项目已经开了计费,权限也和App Engine默认桶一致,新桶却偏偏报这个错。我帮你梳理几个可能的排查方向,你可以一步步试:
确认新桶的所属项目是否正确
有时候创建桶时可能手滑选错了项目,导致新桶关联到了一个没开计费的项目上。你可以打开GCS控制台,找到flow-292019-cdn桶,查看桶详情里的「所属项目」,确认它和你的App Engine项目是同一个,再去该项目的计费页面核实状态确实是「已启用」。检查桶的计费继承设置
GCS桶默认会继承项目的计费设置,但也有可能被手动修改过。进入新桶的详情页,找到「计费」标签,确认是否勾选了「继承项目的计费设置」。如果是自定义设置,确保没有禁用任何和计费相关的选项。重新验证服务账号的权限
App Engine默认使用的是PROJECT_ID@appspot.gserviceaccount.com这个服务账号,虽然你说权限和默认桶一致,但还是要确认下新桶的权限是否正确应用了:- 去GCS桶的权限页面,搜索这个服务账号,确认它有
Storage Object Creator或更高权限(比如Storage Admin); - 权限变更有时候需要几分钟才会生效,设置完可以等个5分钟再测试上传。
- 去GCS桶的权限页面,搜索这个服务账号,确认它有
排查组织级的计费限制
如果你的项目属于某个Google Cloud组织,可能组织管理员设置了限制政策,比如不允许新建桶启用计费。可以联系组织管理员检查组织政策里的相关约束,比如和资源计费、存储桶创建相关的规则。核对代码中的桶名是否正确
注意到错误信息里同时出现了flow-292019-cdn和test-project-cdn两个桶名,会不会是代码里上传的桶名和你实际创建的桶名不一致?比如代码里写错了桶名,传到了另一个没开计费的桶上?仔细检查代码里的桶名称,确保和控制台里的完全匹配。尝试重新创建桶
如果以上都没问题,可能是桶在创建过程中出现了异常。你可以删除这个新桶,重新创建一个,创建时务必选对项目,再重新配置权限,然后测试上传。
内容的提问来源于stack exchange,提问作者user14345689

