Ответ
Для использования AWS CLI с включенной MFA необходимо получать временные сессионные учетные данные. Постоянные ключи доступа (Access Key/Secret Key) с MFA напрямую не работают.
Шаги настройки и использования:
-
Настройка MFA на пользователе IAM:
- В консоли IAM привяжите виртуальное (например, Google Authenticator) или физическое MFA-устройство к своему пользователю.
- Запишите ARN устройства MFA (например,
arn:aws:iam::123456789012:mfa/username).
-
Получение временных токенов: Используйте команду
sts get-session-token, передав код с MFA-устройства.aws sts get-session-token --serial-number arn:aws:iam::123456789012:mfa/username --token-code 123456Ответ будет содержать
AccessKeyId,SecretAccessKeyиSessionToken. -
Настройка профиля AWS CLI с временными учетными данными:
- Вариант A: Экспорт переменных окружения (для текущей сессии):
export AWS_ACCESS_KEY_ID="ASIA..." export AWS_SECRET_ACCESS_KEY="..." export AWS_SESSION_TOKEN="..." - Вариант B: Добавление нового профиля в
~/.aws/credentials(предпочтительно для скриптов):[mfa-profile] aws_access_key_id = ASIA... aws_secret_access_key = ... aws_session_token = ...Затем используйте CLI с флагом
--profile mfa-profile.
- Вариант A: Экспорт переменных окружения (для текущей сессии):
-
Автоматизация (опционально): Можно написать shell-скрипт, который запрашивает MFA-код, получает токены и автоматически обновляет профиль в credentials-файле. Для парсинга JSON-ответа AWS CLI удобно использовать
jq.
Важно: Временные учетные данные действуют по умолчанию 12 часов (максимум 36 часов, если у пользователя есть соответствующие права). После истечения срока действия команду нужно выполнить заново.