Python 使用boto3和MFA自动处理会话令牌

Python 使用boto3和MFA自动处理会话令牌,python,python-3.x,amazon-web-services,boto3,Python,Python 3.x,Amazon Web Services,Boto3,我的.aws/credentials设置为 [default] aws_access_key_id = [key] aws_secret_access_key = [secret! Shh!] 和.aws/config [profile elevated] role_arn = [elevated role arn] source_profile = default mfa_serial = [my device arn] 在凭证和配置文件这样设置的情况下 自动代表您对AWS STS进行相应

我的
.aws/credentials
设置为

[default]
aws_access_key_id = [key]
aws_secret_access_key = [secret! Shh!]
.aws/config

[profile elevated]
role_arn = [elevated role arn]
source_profile = default
mfa_serial = [my device arn]
凭证
配置
文件这样设置的情况下

自动代表您对AWS STS进行相应的AssumeRole调用。它会处理好的 内存缓存以及根据需要刷新凭据

所以当我使用


session=bot3.session(profile_name=“提升”)
在一个较长的函数中,我所要做的就是在点击“enter”后立即输入我的MFA代码,所有运行和凭证都独立于我的输入进行管理。这太棒了。我喜欢这样,当我需要在另一个AWS帐户中担任角色时,
boto3
处理对
sts
的所有调用,我所要做的就是照看孩子

如果我不想扮演另一个角色呢?如果我想直接作为我的
用户
作为我的用户被分配到的组的成员来做事情?有没有办法让bot3自动处理凭证方面的问题

,但是有没有一种方法可以通过只使用
config
凭证
文件来强制
bot3
处理会话令牌

但它似乎还依赖于在运行Python脚本之前使用AWS CLI输入和存储密钥/会话令牌,并且仍然需要在CLI中硬编码变量


有没有一种方法可以通过使用
config
credentials
文件自动执行此操作,而无需手动输入AWS访问密钥和处理会话令牌?

如果您在EC2上运行应用程序,则可以通过EC2角色附加角色。 在代码中,您可以根据附加的角色动态获取凭据

session = boto3.
credentials = session.get_credentials().get_frozen_credentials()

access_key = credentials.access_key
secret_key = credentials.secret_key
token = credentials.token

您可能还希望使用botocore.credentials.RefreshableCdentials偶尔刷新您的令牌

如果您在EC2上运行应用程序,您可以通过EC2角色附加角色。 在代码中,您可以根据附加的角色动态获取凭据

session = boto3.
credentials = session.get_credentials().get_frozen_credentials()

access_key = credentials.access_key
secret_key = credentials.secret_key
token = credentials.token

您可能还希望使用botocore.credentials.RefreshableCredentials偶尔刷新您的令牌

这仅在应用程序位于EC2上时有效?如果它只是在我的本地机器上运行呢?这只在应用程序在EC2上时有效?如果它只是在我的本地计算机上运行呢?您可以通过不指定任何内容的方式使用
默认
配置文件来获取会话(
session=boto3.session(profile\u name=“highted”)
)-这是否有不起作用的原因?您可以通过不指定任何内容的方式使用
默认
配置文件来获取会话(
session=boto3.session(profile_name=“highted”)
)-有没有这样做不起作用的原因?