aws cli 出现错误 "The security token included in the request is invalid"
aws cli get error "The security token included in the request is invalid"
我做了 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
,但我仍然遇到同样的错误。
能否请你帮忙?谢谢!
您的帐户是否启用了 MFA?您可能需要 运行
aws sts get-session-token
记录了有关如何将 MFA 与 cli 结合使用的详细信息 here。
启用 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
下的配置文件。
我把它放在一起,因为必须一直这样做非常烦人。我不是 shell 开发人员,但这对我有用 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}"
我做了 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
,但我仍然遇到同样的错误。
能否请你帮忙?谢谢!
您的帐户是否启用了 MFA?您可能需要 运行
aws sts get-session-token
记录了有关如何将 MFA 与 cli 结合使用的详细信息 here。
启用 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
下的配置文件。
我把它放在一起,因为必须一直这样做非常烦人。我不是 shell 开发人员,但这对我有用 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}"