Google Storage requester pays桶未提供用户项目报错 Python下载问题问询
错误原因
你访问的GCS存储桶开启了*请求者付费(Requester Pays)*模式,该模式下访问产生的所有费用由请求发起方承担,因此请求时必须明确指定承担费用的GCP项目ID,仅在初始化Storage客户端时传项目ID不足以触发费用承担声明。
解决方案
修改代码,在获取桶实例时额外传入user_project参数,值为你自己的GCP项目ID,即可完成费用承担声明,修正后的代码如下:
import os import json from google.cloud import storage from google.cloud.bigquery.client import Client os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = 'path/to/key.json' bq_client = Client() # 初始化存储客户端 storage_client = storage.Client(project='my_projectID') # 获取桶实例时传入user_project声明承担费用 bucket = storage_client.get_bucket('the_bucket', user_project='my_projectID') file_json = bucket.get_blob('file.json') data = json.loads(file_json.download_as_string())
注意事项
- 请确保
user_project传入的项目ID已绑定正常可用的计费账号,无欠费/冻结情况 - 请确保你的密钥对应的服务账号/身份,已被授予目标存储桶的
storage.objects.get及storage.buckets.get权限
内容的提问来源于stack exchange,提问作者vinsin
相关产品推荐
相关产品推荐

