Итак, я нашел решение из сообщения AWS .
Выпуск:
В доверительных отношениях SECOND_ACCOUNT
admin
есть условие:
"Condition": {
"Bool": {
"aws:MultiFactorAuthPresent": "true"
}
}
это означает, что для выполнения команд консоли требуется токен от MFA.
Так я и сделал:
$ aws sts get-session-token --serial-number MFA_NUM --token-code CODE_FROM_MFA
{
"Credentials": {
"AccessKeyId": ID,
"SecretAccessKey": KEY,
"SessionToken": TOKEN,
"Expiration": "2019-07-12T01:14:07Z"
}
}
Затем я добавил к .aws/credentials
:
[mfa]
aws_access_key_id = ID_FROM_ABOVE
aws_secret_access_key = KEY_FROM_ABOVE
aws_session_token = TOKEN_FROM_ABOVE
Затем отредактировал .aws/config
:
[mfa]
output = json
region = us-east-1
[profile secondaccount]
role_arn = arn:aws:iam::<SECOND_ACCOUNT_ID>:role/admin
source_profile = mfa
Затем я смог запустить команды CLI с --profile secondaccount
.
Если вы решите сделать это, что является наилучшей практикой AWS, AWS рекомендует использовать сценарий для автоматизации процесса получения нового токена.
Если вы «ленивый», удалите condition
в доверительных отношениях.