通过传递 anon=
关键字参数,我可以使用 boto
连接到公共 S3 存储桶而无需凭据。
s3 = boto.connect_s3(anon=True)
使用 boto3
是否可行?
通过传递 anon=
关键字参数,我可以使用 boto
连接到公共 S3 存储桶而无需凭据。
s3 = boto.connect_s3(anon=True)
使用 boto3
是否可行?
是的,您的凭证用于签署您发送的所有请求,因此您需要做的是将客户端配置为根本不执行签署步骤。您可以按以下方式进行操作:
import boto3
from botocore import UNSIGNED
from botocore.client import Config
s3 = boto3.client('s3', config=Config(signature_version=UNSIGNED))
# Use the client
禁用签名
import boto3
from botocore.handlers import disable_signing
resource = boto3.resource('s3')
resource.meta.client.meta.events.register('choose-signer.s3.*', disable_signing)
目前 boto3 版本(1.9.168)似乎都不起作用。这个方法(来自于 botocore 上未修复的 GitHub 问题)似乎能解决问题:
client = boto3.client('s3', aws_access_key_id='', aws_secret_access_key='')
client._request_signer.sign = (lambda *args, **kwargs: None)
region_name
设置为us-east-1
,尽管我创建的是一个boto s3资源,而不是一个boto s3客户端。请参阅https://www.learnaws.org/2021/02/24/boto3-resource-client/ - undefinedregion_name
,它也可以正常工作。 - undefined