我可以匿名使用boto3吗?

MRo*_*lin 13 python amazon-s3 boto amazon-web-services boto3

随着boto我可以通过将连接到公共S3桶无凭据anon=关键字参数.

s3 = boto.connect_s3(anon=True)
Run Code Online (Sandbox Code Playgroud)

这有可能boto3吗?

Jor*_*ips 16

是.您的凭据用于签署您发出的所有请求,因此您需要做的是将客户端配置为根本不执行签名步骤.你可以这样做:

import boto3
from botocore import UNSIGNED
from botocore.client import Config

s3 = boto3.client('s3', config=Config(signature_version=UNSIGNED))
# Use the client
Run Code Online (Sandbox Code Playgroud)

  • 最好用最新的解决方案更新这个答案。 (4认同)

hel*_*loV 14

禁用签名

import boto3

from botocore.handlers import disable_signing
resource = boto3.resource('s3')
resource.meta.client.meta.events.register('choose-signer.s3.*', disable_signing)
Run Code Online (Sandbox Code Playgroud)


Ran*_*per 5

从当前的 boto3 版本(1.9.168)开始,这些似乎都不起作用。这个 hack(由 botocore 上一个未修复的 github 问题提供)似乎确实有效:

client = boto3.client('s3', aws_access_key_id='', aws_secret_access_key='')
client._request_signer.sign = (lambda *args, **kwargs: None)
Run Code Online (Sandbox Code Playgroud)

  • [Jordon Phillips 的回答](/sf/answers/2440626471/) 似乎在 boto3 1.9.251 上为我工作。 (3认同)