Либо в моей среде что-то не так, либо эта функциональность не работает. Похоже, в какой-то момент это сработало в соответствии с блог Я следил за:
Что я хотел бы сделать, так это запустить свой скрипт, войти в MFA. Затем вы сможете запустить его снова, не входя в MFA, используя кэшированный токен сеанса.
Образцы, которые я видел:
session = boto3.Session(profile_name='w2-cf3')
ec2_client = session.client('ec2',region_name='us-west-2')
Затем мне предлагается мой mfa:
Enter MFA code:
Я ввожу его, и мой код работает. На данный момент мой токен сеанса должен быть закэширован, так это работает в awscli. Однако при втором запуске, вместо чтения моего кэшированного сеанса для этого профиля, boto3 игнорирует и снова запрашивает мой MFA:
Enter MFA code:
Вот как выглядит мой файл ~/.aws/config:
[profile default]
region = us-west-2
output = json
[profile w2-cf3]
region = us-west-2
source_profile = default
role_arn = arn:aws:iam::<accountid>:role/<role>
mfa_serial = arn:aws:iam::<accountid>:mfa/<user>
Вот как выглядит мой файл ~/.aws/credentials:
[default]
aws_access_key_id=<access key>
aws_secret_access_key=<secret key>
Ожидаемый: я ожидал, что во второй раз, когда я запущу свой скрипт, он будет использовать кешированный токен сеанса, как это делается в awscli. Токен сеанса, предоставленный AWS, действует 1 час.