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

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

s3 = boto.connect_s3(anon=True)

Возможно ли это с boto3?


person MRocklin    schedule 18.01.2016    source источник


Ответы (3)


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

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

s3 = boto3.client('s3', config=Config(signature_version=UNSIGNED))
# Use the client
person Jordon Phillips    schedule 18.01.2016
comment
было бы неплохо обновить этот ответ актуальным решением. - person weaver; 23.03.2020

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

import boto3

from botocore.handlers import disable_signing
resource = boto3.resource('s3')
resource.meta.client.meta.events.register('choose-signer.s3.*', disable_signing)
person helloV    schedule 18.01.2016
comment
Остановит ли это использование учетных данных, если они присутствуют? Подходит ли установка по умолчанию? - person MRocklin; 19.01.2016
comment
Это предотвратит использование учетных данных на этом клиенте. Вам понадобится еще один клиент для подключения к ограниченным корзинам s3. То же самое относится и к моему решению. Примечание: оба решения делают одно и то же. - person Jordon Phillips; 19.01.2016

Ни один из них не работает с текущей версией 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)
person RandomIOSDeveloper    schedule 15.06.2019
comment
ответ Джордона Филлипса работает для меня на boto3 1.9.251. - person gerrit; 17.10.2019