В boto я указывал свои учетные данные при подключении к S3 таким образом:
import boto
from boto.s3.connection import Key, S3Connection
S3 = S3Connection( settings.AWS_SERVER_PUBLIC_KEY, settings.AWS_SERVER_SECRET_KEY )
Затем я мог бы использовать S3 для выполнения своих операций (в моем случае удаления объекта из ведра).
С boto3 все примеры, которые я нашел, таковы:
import boto3
S3 = boto3.resource( 's3' )
S3.Object( bucket_name, key_name ).delete()
Я не смог указать свои учетные данные, поэтому все попытки заканчиваются InvalidAccessKeyId
ошибкой.
Как я могу указать учетные данные с помощью boto3?
python
amazon-web-services
amazon-s3
boto3
Роберт Бракс
источник
источник
Ответы:
Вы можете создать сеанс :
import boto3 session = boto3.Session( aws_access_key_id=settings.AWS_SERVER_PUBLIC_KEY, aws_secret_access_key=settings.AWS_SERVER_SECRET_KEY, )
Затем используйте этот сеанс для получения ресурса S3:
s3 = session.resource('s3')
источник
Вы можете получить
client
новый сеанс прямо, как показано ниже.s3_client = boto3.client('s3', aws_access_key_id=settings.AWS_SERVER_PUBLIC_KEY, aws_secret_access_key=settings.AWS_SERVER_SECRET_KEY, region_name=REGION_NAME )
источник
Это старше, но я тоже помещаю это сюда для справки. boto3.resource просто реализует сеанс по умолчанию, вы можете передать сведения о сеансе boto3.resource.
Help on function resource in module boto3: resource(*args, **kwargs) Create a resource service client by name using the default session. See :py:meth:`boto3.session.Session.resource`.
https://github.com/boto/boto3/blob/86392b5ca26da57ce6a776365a52d3cab8487d60/boto3/session.py#L265
вы можете видеть, что он просто принимает те же аргументы, что и Boto3.Session
import boto3 S3 = boto3.resource('s3', region_name='us-west-2', aws_access_key_id=settings.AWS_SERVER_PUBLIC_KEY, aws_secret_access_key=settings.AWS_SERVER_SECRET_KEY) S3.Object( bucket_name, key_name ).delete()
источник
Я хотел бы расширить ответ @ JustAGuy. Я предпочитаю использовать
AWS CLI
для создания файла конфигурации. Причина в том, что с файлом конфигурацииCLI
илиSDK
автоматически ищет учетные данные в~/.aws
папке. И хорошо то, чтоAWS CLI
он написан на питоне.Вы можете получить cli из pypi, если у вас его еще нет. Вот шаги, чтобы настроить cli с терминала
$> pip install awscli #can add user flag $> aws configure AWS Access Key ID [****************ABCD]:[enter your key here] AWS Secret Access Key [****************xyz]:[enter your secret key here] Default region name [us-west-2]:[enter your region here] Default output format [None]:
После этого вы можете получить доступ к
boto
любому из API без необходимости указывать ключи (если вы не хотите использовать другие учетные данные).источник
Есть множество способов сохранить учетные данные при использовании boto3.resource (). Я сам использую метод AWS CLI. Работает отлично.
https://boto3.amazonaws.com/v1/documentation/api/latest/guide/configuration.html?fbclid=IwAR2LlrS4O2gYH6xAF4QDVIH2Q2tzfF_VZ6loM3XfXsPAOR4qA-pX_qAys
источник