Как использовать Amazon SES с динамическими учетными данными?
Я использую Django/Python и хочу использовать несколько учетных данных Amazon SES на одном сервере.
Я нашел boto3 для потребления API Amazon, но он требует установки учетных данных с помощью файла или переменных окружения. То есть я не могу (или это трудно) изменить их во время выполнения.
Как я могу установить учетные данные динамически во время выполнения?
Я ищу решение, подобное этому: (boto3 не является обязательным, я могу использовать любое решение)
CREDS = {
"foo": {
"AWS_ACCESS_KEY_ID": "XXX",
"AWS_SECRET_ACCESS_KEY": "XXX",
"AWS_DEFAULT_REGION": "us-east-1",
},
"bar": {
"AWS_ACCESS_KEY_ID": "YYY",
"AWS_SECRET_ACCESS_KEY": "YYY",
"AWS_DEFAULT_REGION": "us-east-1",
},
}
my_config = CREDS.get("foo") # or "bar"
client = boto3.client('ses', config=my_config)
Как я могу это реализовать?
Есть несколько способов сделать это:
Способы, которые вы также хотели, почти правильные. Я бы посоветовал либо настроить его в boto3.client, либо использовать сессию, и все должно работать как ожидается.
Пример:
import boto3
client = boto3.client(
's3',
aws_access_key_id=ACCESS_KEY,
aws_secret_access_key=SECRET_KEY,
aws_session_token=SESSION_TOKEN
)
Если вы хотите, вы также можете создать конфигурационный файл aws с несколькими профилями, которые вы можете просто получить в вашем приложении.
Все объясняется здесь: https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html