如何正确使用Google云存储python库中的create_anonymous_client()函数在公共存储桶上进行访问?

时间:2018-06-28 08:27:49

标签: python google-cloud-platform google-cloud-storage

我在Google云端存储上创建了一个可公开列出的存储桶。如果尝试在浏览器中列出存储桶对象,则可以看到所有键。我试图使用create_anonymous_client()函数,以便可以在python脚本中列出存储桶键。这给了我一个例外。我四处张望,但仍然找不到使用该功能的正确方法。

from google.cloud import storage

client = storage.Client.create_anonymous_client()
a = client.lookup_bucket('publically_listable_bucket')
a.list_blobs()

我得到的异常:

ValueError: Anonymous credentials cannot be refreshed.

其他查询:我可以使用boto3列出和下载公共Google云存储桶的内容吗,如果可以,该如何匿名进行?

2 个答案:

答案 0 :(得分:1)

我当时还在努力工作,在网上找不到任何答案。事实证明,您只能使用bucket()方法访问存储桶。

我不确定为什么,但是这种方法有时可能需要几秒钟。

client = storage.Client.create_anonymous_client()

bucket = client.bucket('publically_listable_bucket')

blobs = list(bucket.list_blobs())

答案 1 :(得分:0)

此错误表示您尝试列出的存储桶未授予正确的权限。您必须将“ Storage Object Viewer”或“ Storage Legacy Bucket Reader”角色赋予“ allUsers”。