如何从boto3的配置文件中检索mfa_serial?

时间:2019-04-29 01:17:17

标签: amazon-web-services boto3

在我的〜/ .aws / config文件中:

[dev]
region = us-east-1
output = json
mfa_serial = arn:aws:iam::1111:mfa/user

如何从boto3的配置中检索mfa_serial,这样我就不必在py脚本中指定arn了?

sts = session.client('sts')
mfa_code = input("Enter the MFA code: ")
mfa_session = sts.get_session_token(
    DurationSeconds=3600,
    SerialNumber=mfa_serial,
    TokenCode=mfa_code
)

2 个答案:

答案 0 :(得分:1)

您可以使用 botocore.session.get_scoped_config 获取当前配置文件中定义的 mfa_serial

from botocore.session import Session
Session().get_scoped_config().get('mfa_serial')

答案 1 :(得分:0)

如果可以接受用户名输入,则可以使用list_mfa_devices以编程方式获取MFA信息。

此代码段请求用户的IAM名称,然后检索MFA信息。

import boto3

iam = session.client('iam')
user = input("Username: ")
response = iam.list_mfa_devices(UserName=user)['MFADevices']
mfa = next(iter(response))['SerialNumber']
print(mfa)

输出将是以下格式:

  

arn:aws:iam :: 123456789123:mfa / amandahugginkiss

参考

https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/iam.html#IAM.Client.list_mfa_devices