aws sts assume-role
возвращает учетные данные в Json-формате. Есть ли простой способ (например, поместить их в переменные среды), чтобы последующие вызовы aws
можно их использовать?
В принципе, я хочу что-то вроде sudo -i
для AWS.
Примечание. В настоящее время я делаю это на своем ноутбуке с текущими учетными данными в переменных env, но было бы неплохо, если бы решение также работало на экземплярах EC2, где исходные учетные данные роли берутся из метаданных экземпляра.
Вместо того, чтобы позвонить sts assume-role
явно, вы можете настроить профиль который принимает на себя определенную роль, которая затем кэшируется в CLI. Это хорошо задокументированы, но вы просто настраиваете его как обычный профиль в своем ~/aws/config
файл, например:
[profile marketingadmin]
role_arn = arn:aws:iam::123456789012:role/marketingadmin
source_profile = default
Если вы применяете MFA при принятии роли (что я настоятельно рекомендую вам сделать), это будет выглядеть примерно так:
[profile marketingadmin]
role_arn = arn:aws:iam::123456789012:role/marketingadmin
source_profile = default
mfa_serial = arn:aws:iam::123456789012:mfa/jonsmith
Чтобы использовать настроенную вами роль, вы либо предоставляете --profile
Опцию CLI или обязательно установите AWS_PROFILE
переменная среды с именем профиля.
Вы, конечно, также можете позвонить sts assume-role
явно, тогда вам нужно будет проанализировать соответствующие значения и поместить их в следующие переменные среды: AWS_ACCESS_KEY_ID
, AWS_SECRET_ACCESS_KEY
и AWS_SESSION_TOKEN
.