AWS CLI存在我的凭证但无对应凭证文件,咨询其存储位置
我可以运行AWS CLI的aws configure命令查看我的凭证,且我使用了命名配置文件。但我的系统中没有Users\{profile}\.aws\credentials文件,请问我的凭证可能存储在哪里?执行aws configure list命令返回如下结果,但我本机所有账户的~/.aws/config文件均为空,且已显示隐藏文件:
$aws configure list Name Value Type Location ---- ----- ---- -------- profile <not set> None None access_key ****************BBBB shared-credentials-file secret_key ****************BBBB shared-credentials-file region us-east-1 config-file ~/.aws/config
从aws configure list的输出能看到,你的access_key和secret_key来自shared-credentials-file,说明凭证肯定存在某个共享凭证文件里,只是你没找对位置。以下是几个排查方向:
环境变量自定义了凭证路径:AWS CLI会优先读取
AWS_SHARED_CREDENTIALS_FILE环境变量。如果这个变量已设置,凭证就存在它指向的文件里,而非默认的~/.aws/credentials。你可以在终端执行对应命令查看:- Linux/macOS:
echo $AWS_SHARED_CREDENTIALS_FILE - Windows:
echo %AWS_SHARED_CREDENTIALS_FILE%
- Linux/macOS:
Windows系统路径混淆:Windows的默认凭证路径是
C:\Users\<你的系统用户名>\.aws\credentials,注意这里是你当前登录的系统用户名,不是你用的命名配置文件名称,别把profile名和系统用户名搞混了。凭证文件的隐藏或权限问题:确认是否有其他隐藏的
.aws目录,或是第三方工具(比如AWS SDK、配置管理工具)修改了存储路径。另外,输出里region显示来自~/.aws/config,但你说这个文件为空,可能是你查看的目录不对,或是文件权限导致无法看到内容,建议检查文件实际内容。排除IAM角色/实例元数据:如果是在AWS EC2实例上运行,虽然输出明确是文件存储,但可以快速排除是否附加了IAM角色——不过这种情况和输出的
shared-credentials-file类型不符,概率很低。
内容的提问来源于stack exchange,提问作者Chris Chevalier

