非所属GCP项目存储桶的Google Cloud Storage Python API下载求助
解决方法
你的报错源于默认初始化的storage.Client会自动关联本地凭证对应的默认GCP项目,而该项目的账单账号处于关闭状态,导致权限校验失败。但你的凭证本身拥有目标存储桶的读写权限,只需调整Client的初始化逻辑,避免关联到账单关闭的项目即可,以下是两种可行方案:
方案一:显式指定凭证并跳过项目关联
from google.cloud import storage from google.auth import default # 获取本地已通过`gcloud auth application-default login`认证的应用默认凭证 credentials, _ = default() # 初始化Client时仅传入凭证,不指定项目(避免触发默认项目的账单校验) client = storage.Client(credentials=credentials, project=None) # 下载目标Blob blob = storage.Blob.from_string("gs://BUCKET/PATH", client=client) content = blob.download_as_text()
方案二:通过Bucket对象直接操作Blob
from google.cloud import storage from google.auth import default credentials, _ = default() # 初始化无项目关联的Client client = storage.Client(credentials=credentials, project=None) # 获取目标存储桶(仅需桶名,无需知晓所属项目ID) bucket = client.get_bucket("BUCKET") # 获取并下载指定路径的Blob blob = bucket.blob("PATH") content = blob.download_as_text()
两种方案均使用与gsutil一致的本地认证凭证,绕开了默认项目的账单校验逻辑,可直接访问目标私有存储桶内容。
内容的提问来源于stack exchange,提问作者Migwell
相关产品推荐
相关产品推荐

