Токен сеанса кэширования boto3 не работает

Либо в моей среде что-то не так, либо эта функциональность не работает. Похоже, в какой-то момент это сработало в соответствии с блог Я следил за:

Что я хотел бы сделать, так это запустить свой скрипт, войти в 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 час.


person buildmaestro    schedule 11.07.2017    source источник


Ответы (1)


Это обсуждается в репозитории GitHub для botocore здесь и запрос на вытягивание также был отправлен и обсуждается.

Вы правы, похоже, это работало еще в 2014 году, но было каким-то образом удалено из обсуждения в ветке, упомянутой выше, это должно быть реализовано повторно в ближайшее время, следите за веткой запросов на вытягивание и обязательно обновляйтесь, когда она выполняется выпускать.

person Frederic Henri    schedule 11.07.2017
comment
Похоже, PR закрыт и новый PR (github.com/ansible/ansible/pull/24582) был создан для решения этой проблемы. - person Anthony Kong; 12.08.2019