Могу ли я использовать boto3 анонимно?

С boto я могу подключиться к общедоступным ведрам S3 без учетных данных, передав аргумент ключевого слова anon=.

s3 = boto.connect_s3(anon=True)

Возможно ли это с помощью boto3?

Ответ 1

Отключить подписку

import boto3

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

Ответ 2

Да. Ваши учетные данные используются для подписания всех отправленных вами запросов, поэтому вам нужно настроить клиент, чтобы он вообще не выполнял шаг подписи. Вы можете сделать это следующим образом:

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

s3 = boto3.client('s3', config=Config(signature_version=UNSIGNED))
# Use the client

Ответ 3

Похоже, что ни одна из них не работает в текущей версии boto3 (1.9.168). Этот хак (благодаря нефиксированной проблеме github на botocore), похоже, делает свое дело:

client = boto3.client('s3', aws_access_key_id='', aws_secret_access_key='')
client._request_signer.sign = (lambda *args, **kwargs: None)