#amazon-web-services #aws-cli
#amazon-web-services #aws-cli
Вопрос:
Я сделал aws configure
и проверил, что это работало раньше. Но сегодня это не сработало, я получил ошибку при попытке получить размещенную зону
$ aws route53 list-hosted-zones
An error occurred (InvalidClientTokenId) when calling the ListHostedZones operation: The security token included in the request is invalid.
Я удалил ~/.aws и сделал aws configure
это снова, но все равно получил ту же ошибку.
Не могли бы вы, пожалуйста, помочь? Спасибо!
Ответ №1:
После включения MFA вам нужно будет передать временные учетные данные, полученные при выполнении
aws sts get-session-token
при каждом последующем запросе.
С переменными среды:
export AWS_ACCESS_KEY_ID=XXX
export AWS_SECRET_ACCESS_KEY=YYY
export AWS_DEFAULT_REGION=us-east-2
export AWS_SESSION_TOKEN=ZZZ
С именованными профилями:
[mfa]
aws_access_key_id = XXX
aws_secret_access_key = YYY
aws_session_token = ZZZ
Эта An error occurred (InvalidClientTokenId) ...
ошибка может возникать снова и снова, если вы забудете удалить предыдущие временные учетные данные.
Итак, если вы используете переменные среды, не забудьте отменить все переменные перед новым выполнением aws sts get-session-token
:
unset AWS_ACCESS_KEY_ID
unset AWS_SECRET_ACCESS_KEY
unset AWS_SESSION_TOKEN
Если вы используете именованные профили — не забудьте обновить профиль в разделе .aws/credentials
.
Ответ №2:
Включен ли MFA в вашей учетной записи? Возможно, вам придется запустить
aws sts get-session-token
Подробная информация о том, как использовать MFA с cli, задокументирована здесь.
Комментарии:
1. я получаю
An error occurred (InvalidClientTokenId) when calling the GetSessionToken operation: The security token included in the request is invalid
при попытке запуститьaws sts get-session-token
Ответ №3:
Я собрал это вместе, поскольку необходимость делать это все время была очень раздражающей. Я не разработчик оболочки, но это работает для меня, используя source /path/to/this/script.sh
#!/bin/bash
unset AWS_ACCESS_KEY_ID
unset AWS_SECRET_ACCESS_KEY
unset AWS_DEFAULT_REGION
unset AWS_SESSION_TOKEN
AWS_CREDS=$(aws sts get-session-token)
AWS_ACCESS_KEY_ID=$(jq -r '.[].AccessKeyId' <<< "${AWS_CREDS}")
AWS_SECRET_ACCESS_KEY=$(jq -r '.[].SecretAccessKey' <<< "${AWS_CREDS}")
AWS_DEFAULT_REGION='YOUR_REGION'
AWS_SESSION_TOKEN=$(jq -r '.[].SessionToken' <<< "${AWS_CREDS}")
AWS_TOKEN_EXPIRATION=$(jq -r '.[].Expiration' <<< "${AWS_CREDS}")
export AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID
export AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY
export AWS_DEFAULT_REGION=$AWS_DEFAULT_REGION
export AWS_SESSION_TOKEN=$AWS_SESSION_TOKEN
echo "Tokens generated and saved to this terminal session. Tokens will expire on ${AWS_TOKEN_EXPIRATION}"
Ответ №4:
После получения этой ошибки и входа в систему через браузер я увидел, что «Ключ доступа» моего пользователя IAM был «неактивным». После его активации (из того же представления) Я смог использовать aws и aws-vault.