已配置AWS CLI却提示缺少AWS_SECRET_ACCESS_KEY错误的求助
解决AWS CLI报错"Partial credentials found in env, missing: AWS_SECRET_ACCESS_KEY"的排查步骤
我之前也碰到过完全一样的问题!明明本地配置文件里存了密钥,却还是报这个错,多半是环境变量冲突或者配置细节出了问题,咱们一步步来排查:
1. 优先排查环境变量冲突
报错里明确提到"Partial credentials found in env",这说明你的终端环境已经设置了AWS_ACCESS_KEY_ID环境变量,但没配上对应的AWS_SECRET_ACCESS_KEY。AWS CLI会优先读取环境变量,而不是本地的~/.aws/config或credentials文件,所以哪怕配置文件里有完整密钥,也会被环境变量的部分配置干扰。
- 先在终端执行这两个命令,确认环境变量状态:
echo $AWS_ACCESS_KEY_ID echo $AWS_SECRET_ACCESS_KEY - 如果第一个命令输出了你的访问密钥,第二个是空的,那就是问题根源:
- 临时解决:执行
unset AWS_ACCESS_KEY_ID和unset AWS_SECRET_ACCESS_KEY,清空这两个环境变量后再重新运行AWS命令。 - 永久解决:找到设置这些环境变量的地方(比如
~/.bashrc、~/.zshrc或者系统环境变量配置文件),删除对应的行,然后重启终端生效。
- 临时解决:执行
2. 确认~/.aws/config的格式正确性
哪怕你看到文件里有秘密密钥,也可能是格式不对导致CLI无法正确读取:
- 检查配置文件结构,每个profile的密钥必须放在对应的区块内,比如默认profile的正确格式应该是:
[default] aws_access_key_id = YOUR_ACCESS_KEY_HERE aws_secret_access_key = YOUR_SECRET_KEY_HERE region = us-east-1 # 可选,但建议配置 - 注意键名必须完全准确:是
aws_secret_access_key,别写成aws_secret_key或其他变体,大小写也不能出错。 - 如果你用的是自定义profile(比如
[profile my-project]),运行命令时必须加上--profile my-project参数,否则CLI会默认读取default区块的配置。
3. 检查配置文件的权限
AWS CLI对~/.aws目录和配置文件的权限要求很严格,如果权限过于开放,会拒绝读取密钥内容:
- 执行以下命令修正权限:
(如果你的密钥存在chmod 700 ~/.aws chmod 600 ~/.aws/config~/.aws/credentials文件里,也要给这个文件设置600权限)
4. 尝试更新AWS CLI版本
旧版本的AWS CLI可能存在配置文件解析的bug,更新到最新版本试试:
- 如果是用pip安装的:
pip install --upgrade awscli - 如果是Mac用Homebrew:
brew upgrade awscli - 其他系统可以通过对应的包管理器完成更新。
测试验证
做完上面的步骤后,运行一个简单的AWS命令验证,比如:
aws s3 ls
如果是自定义profile,就用:
aws s3 ls --profile your-profile-name
如果能正常输出结果,说明问题已经解决了!
内容的提问来源于stack exchange,提问作者TJB
相关产品推荐
相关产品推荐

