boto 可以使用未经身份验证的存储桶列表吗?

Unauthenticated bucket listing possible with boto?

我正在使用 boto 与 S3 存储桶进行交互,在某些情况下,我只想能够在不传递我的凭据的情况下列出一个公开可读的存储桶。如果我通过凭据,boto 实际上不会让我列出存储桶,即使它是公开可见的。是否可以连接到 S3 并列出一个存储桶 而无需 传递凭据?

文档没有提到它,但在深入研究代码后我发现了一个隐藏的 kwarg 解决了我的问题:

conn = boto.connect_s3(anon=True)

然后您可以在任何公开可读的存储桶上调用 conn.get_bucket()

我发现如果你只是阅读桶的头部,这没有信用也能工作:

import boto3
s3 = boto3.resource('s3')
bucket = s3.Bucket(options.bucket)
s3.meta.client.head_bucket(Bucket=bucket.name)

use it 当我需要 ping 我的存储桶以提高可读性时。