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}"