首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >假设一个IAM角色在python中,如何做到这一点?

假设一个IAM角色在python中,如何做到这一点?
EN

Stack Overflow用户
提问于 2019-12-05 20:11:40
回答 1查看 2.3K关注 0票数 0

我的aws配置有几个概要文件:

cat配置

代码语言:javascript
复制
[default]
region = us-west-2

[profile sandbox]
region = us-west-2
role_arn = arn:aws:iam::11111111111:role/team-role
source_profile = default

[profile cat]
role_arn = arn:aws:iam::22222222222:role/data-systems-role
region = us-west-2
source_profile = default

当我从CLI运行这个命令时,我可以通过在末尾键入cat来承担--profile的角色。

代码语言:javascript
复制
aws secretsmanager get-secret-value --secret-id "prod/Aurora/klondike/twou_id_ro" --profile dsci

但我不知道如何在python代码中做到这一点。我有这段代码,但它似乎扮演了错误的角色:

代码语言:javascript
复制
 session = boto3.session.Session()
    client = session.client(
        service_name='secretsmanager',
        region_name=region_name
    )


{'Error': {'Message': 'User: arn:aws:sts::3333333333:assumed-role/.../user@company.com is not authorized to perform: secretsmanager:GetSecretValue on resource: arn:aws:secretsmanager:us-west-2...

我认为我的代码是默认的?如何让我的python代码承担cat角色?当一个角色被假定时,它会从sts获得临时的creds,对吗?这就是发生的事吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-05 20:20:39

这是你该做的。在代码中,使用默认的会话构造函数,例如:

代码语言:javascript
复制
session = boto3.Session()
client = session.client(...)

在带有IAM角色的EC2上运行时,应用程序将使用与该IAM角色关联的凭据。

现在,理想情况下,您希望编写的代码也可以在您的笔记本电脑上工作,而不作任何更改。你能做到的。以上代码可以正常工作。它将从xxx环境变量或默认的AWS凭据配置文件中提取凭据。

如果您在笔记本上运行,并且希望而不是使用默认的AWS凭据配置文件,而是使用您专门设置的另一个配置文件来承担IAM角色,比如您的catsandbox配置文件,那么只需在您的环境中提供该配置文件:

代码语言:javascript
复制
AWS_PROFILE=sandbox python3 my-boto-app.py

或者:

代码语言:javascript
复制
export AWS_PROFILE=sandbox
python3 my-boto-app.py

但是我更喜欢前者,因为AWS_PROFILE环境变量赋值是临时的。

最后,请阅读boto3凭证文档。它们是有帮助的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59202622

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档