AWS sts get-caller-identity返回错误UserId,请求协助排查
AWS CLI凭证配置异常排查方案
1. 排查Docker容器内的凭证来源
- 容器可能挂载宿主机
.aws目录或自带独立凭证文件,执行以下命令确认容器内凭证:docker exec <容器ID> cat ~/.aws/credentials - 检查容器是否通过环境变量注入凭证:
确认是否存在docker exec <容器ID> env | grep AWS_AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY覆盖本地配置。
2. 验证本地CLI凭证优先级
AWS CLI凭证优先级:环境变量 > 凭证文件 > 配置文件 > IAM角色
- 检查本地环境变量残留:
echo $AWS_ACCESS_KEY_ID echo $AWS_SECRET_ACCESS_KEY - 检查是否指定了非默认配置文件:
echo $AWS_PROFILE cat ~/.aws/config
3. 清除CLI缓存
AWS CLI会缓存凭证,执行以下命令清除后重新测试:
rm -rf ~/.aws/cli/cache aws sts get-caller-identity
4. 确认IAM密钥关联用户
登录AWS控制台,进入IAM -> 用户 -> 你的用户(me),查看安全凭证中的访问密钥列表,确认########3PX密钥所属用户是否为当前用户,且无其他密钥被误用。
5. 直接指定密钥测试有效性
绕过配置文件,直接用新密钥执行命令,验证密钥本身是否正确:
AWS_ACCESS_KEY_ID=########3PX AWS_SECRET_ACCESS_KEY=######## aws sts get-caller-identity
若此命令返回正确UserId,说明配置文件或缓存存在问题;若仍返回错误UserId,需确认控制台中该密钥的关联用户是否正确。
6. 解决容器证书问题(初始unable to get local certificate报错)
- 挂载宿主机证书目录到容器:
docker run -v /etc/ssl/certs:/etc/ssl/certs <你的镜像> aws sts get-caller-identity - 或在容器内安装CA证书包(以Debian/Ubuntu为例):
docker exec <容器ID> apt-get install -y ca-certificates
内容的提问来源于stack exchange,提问作者Michael Maurel
相关产品推荐
相关产品推荐

