У меня есть настройка aws, которая требует, чтобы я взял на себя роль и получил соответствующие учетные данные для записи в s3. Например, чтобы писать с aws cli
, мне нужно использовать флаг --profile readwrite
. Если я сам напишу код с загрузкой, я возьму на себя роль через sts
, получу учетные данные и создам новый сеанс.
Однако существует множество приложений и пакетов, зависящих от конфигурации boto3, например внутренний код работает так:
s3 = boto3.resource('s3')
result_s3 = s3.Object(bucket, s3_object_key)
result_s3.put(
Body=value.encode(content_encoding),
ContentEncoding=content_encoding,
ContentType=content_type,
)
Из документации можно настроить boto3 для использования профиля по умолчанию с использованием (среди прочего) переменной AWS_PROFILE
env, и он явно работает в терминах, что boto3.Session().profile_name
действительно соответствует переменной, но приложения по-прежнему не будут писать в s3.
Каким будет наиболее чистый / правильный способ их правильной установки? Я попытался получить учетные данные из sts и записать их как AWS_SECRET_TOKEN и т.д., но у меня это не сработало ...