Как указать учетные данные при подключении к boto3 S3?
В 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?
Ответы
Ответ 1
Вы можете создать session:
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')
Ответ 2
Вы можете получить 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
)
Ответ 3
Существует множество способов хранения учетных данных, в то же время используя boto3.resource().
Я сам использую метод AWS CLI. Работает отлично.
https://boto3.amazonaws.com/v1/documentation/api/latest/guide/configuration.html?fbclid=IwAR2LlrS4O2gYH6xAF4QDVIH2Q2tzfF_VZ6loM3XfXsPAOR4qA-pX_qAILys
Ответ 4
Я хотел бы расширить на @JustAGuy ответ. Метод, который я предпочитаю, заключается в использовании AWS CLI
для создания файла конфигурации. Причина в том, что в конфигурационном файле CLI
или SDK
будут автоматически искать учетные данные в папке ~/.aws
. И хорошо, что AWS CLI
написан на python.
Вы можете получить 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, не указывая ключи (если вы не хотите использовать другие учетные данные).