Далее последует инструкция по настройке AWS MFA, и последющей установке и настройке AWS CLI.
К сожалению, у меня на эту обязательную процедуру ушла половина рабочего дня. Чтобы другим неуверенным пользователям AWS ;) как и я сам, не тратить драгоценное время на эту банальное, решил составить инструкцию.
Даже для sandbox аккаунта настройка MFA это, как правило, обязательное требование. У нас это так.
Настройка MFA
- Установите совместимое мобильное приложение
- Зайдите в AWS консоль
-
My Security Credentials -> Assign MFA
Device
- Virtual MFA Device
- Следуйте инструкциям на экране
- Виртуальное устройство готово
Установка AWS CLI
https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html
Настройка именованного профиля
https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html
-
My Security Credentials -> Create access
key
- Скопируйте ключ в буфер обмена. Он понадобится на следующем шаге
$ aws configure --profile <your profile name>
AWS CLI через MFA
- Скопируйте ARN виртуального устройства
-
aws sts get-session-token --profile <имя профиля> --serial-number <ARN виртуального устройства> --token-code <одноразовый пароль>
Одноразовый пароль необходимо взять из мобильного приложения настроенного ранее. - Команда выведет JSON, отдельные поля которго необходимо подставить в соответствующие переменные окржуения AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN
Я решил автоматизировать через ~/.bash_profile
Для разбора JSON данный скрипт требует jq.
#!/usr/bin/env bashaws_login() { session=$(aws sts get-session-token "$@") echo "${session}" AWS_ACCESS_KEY_ID=$(echo "${session}" | jq -r '.Credentials.AccessKeyId') export AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY=$(echo "${session}" | jq -r '.Credentials.SecretAccessKey') export AWS_SECRET_ACCESS_KEY AWS_SESSION_TOKEN=$(echo "${session}" | jq -r '.Credentials.SessionToken') export AWS_SESSION_TOKEN}alias aws-login-dev='aws_login --profile <имя dev профиля> --serial-number <ARN виртуального устройства> --token-code 'alias aws-login-prod='aws_login --profile <имя prod профиля> --serial-number <ARN виртуального устройства> --token-code '
Использование:
$ aws-login-dev <одноразовый пароль>
Надеюсь данная инструкция поможет вам избежать пространных блужданий по официальной документации ;)