我正在使用Python Google Storage Client,但是我正在使用具有公共读/写访问权限的存储桶。 (我知道这通常是一个糟糕的主意,但是我有一个很好的用例,很好)。
当我尝试检索一些文件时,我得到一个DefaultCredentialsError
。
BUCKET_NAME = 'my-public-bucket-name'
storage_client = storage.Client()
bucket = storage_client.get_bucket(BUCKET_NAME)
def list_blobs(prefix, delimiter=None):
blobs = bucket.list_blobs(prefix=prefix, delimiter=delimiter)
print('Blobs:')
for blob in blobs:
print(blob.name)
特定错误为:
google.auth.exceptions.DefaultCredentialsError: Could not automatically determine credentials. Please set GOOGLE_APPLICATION_CREDENTIALS or explicitly create credentials and re-run the application. For more information, please see https://cloud.google.com/docs/authentication/getting-started
该页面建议使用Oath或其他令牌,但是由于我的存储桶是公开的,我不需要这些令牌吗?我可以向Chrome中的存储桶发出HTTP请求并接收数据。
如何解决此问题?我可以提供默认或空凭据吗?
答案 0 :(得分:1)
来自“ Cloud Storage Authentication”:
您必须对在Cloud Storage中执行的大多数操作进行身份验证。唯一的例外是对允许匿名访问的对象的操作。如果
allUsers
组具有READ
权限,则可以匿名访问对象。allUsers
组包括Internet上的任何人。