尽管已登录,但仍无法从Python连接到GCS存储桶

时间:2019-12-04 18:19:57

标签: google-cloud-storage

我设置了一个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>.

我不确定为什么要匿名访问它,因为我已经清楚地登录了。是否有明显的遗漏之处?

1 个答案:

答案 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))