我有一个 aws 设置,需要我承担角色并获取相应的凭据才能写入 s3。例如,要写 with aws cli
,我需要使用--profile readwrite
flag。如果我自己使用引导编写代码,我将通过 承担角色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 等,但这对我不起作用......