Как использовать 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

Вернуться на верх