我设置了一个GCS存储桶,其中包含要远程访问的数据。按照说明,我已经通过gcloud auth login
登录,并确认我已经通过gcloud auth list
拥有一个有效的凭据帐户。但是,当我尝试使用Python google.cloud.storage API访问存储桶时,会得到以下信息:
HttpError: Anonymous caller does not have storage.objects.list access to <my-bucket-name>.
我不确定为什么要匿名访问它,因为我已经清楚地登录了。是否有明显的遗漏之处?
答案 0 :(得分:0)
Python GCP库(和其他库)使用gcloud命令以外的其他身份验证机制。
遵循this guide设置您的环境并可以使用Python访问GCS。
gcloud aut login
使用您的凭据设置gcloud
命令工具。
但是,执行代码时的前进方向是拥有一个服务帐户。然后,当环境。变量GOOGLE_APPLICATION_CREDENTIALS已设置。 Python将使用服务帐户凭据
修改
import os
os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "path_to_your_.json_credential_file"
修改
然后,将gs://my_bucket/my_file.csv
下载到文件:(从python-docs-samples)
download_blob('my_bucket', 'my_file.csv', 'local/path/to/file.csv')
def download_blob(bucket_name, source_blob_name, destination_file_name):
"""Downloads a blob from the bucket."""
storage_client = storage.Client()
bucket = storage_client.get_bucket(bucket_name)
blob = bucket.blob(source_blob_name)
blob.download_to_filename(destination_file_name)
print('Blob {} downloaded to {}.'.format(
source_blob_name,
destination_file_name))