在项目路径中输入aws configure list
命令后,我得到:
Name Value Type Location
---- ----- ---- --------
profile <not set> None None
access_key ****************skey env
secret_key ****************tkey env
region <not set> None None
我的~/.aws/credentials
和~/.aws/config
如下所示:
~/.aws/credentials
[default]
aws_access_key_id=xxx
aws_secret_access_key=xxx
~/.aws/config
[default]
region=us-east-1
output=json
我尝试在这个项目的路径中设置aws configure
,但是唯一改变的是区域:
Name Value Type Location
---- ----- ---- --------
profile <not set> None None
access_key ****************skey env
secret_key ****************tkey env
region us-east-01 config-file ~/.aws/config
结论:即使~/.aws/credentials
和~/.aws/config
是正确的,我试图将它们设置在项目路径中,它仍然不能正确读取凭据。唯一的变化是在区域中,因为它被设置为none
;其余部分仍然从env
读取如何取消这些凭据并使它们从上述文件中读取(默认用户)?
我手动使用unset
:
unset AWS_ACCESS_KEY_ID
unset AWS_SECRET_ACCESS_KEY
之后,从文件中读取访问密钥和秘密密钥:
Name Value Type Location
---- ----- ---- --------
profile <not set> None None
access_key ****************AYX shared-credentials-file
secret_key ****************vwT shared-credentials-file
region us-east-01 config-file ~/.aws/config
我尝试使用下面的命令设置default
配置文件,现在它读取它为default
,但type
是env
-而不是shared-credentials-file
或~/.aws/config
或~/.aws/credential
文件。
export AWS_DEFAULT_PROFILE=default
这似乎有效,但我不认为这是一个有效的解决方案…
AWS CLI凭据和配置设置按以下顺序优先:
- 命令行选项(——region,——output,和——profile) <
- 环境变量/gh>
- CLI凭证文件
- CLI配置文件 <
- 容器凭证/gh>
- EC2实例配置文件凭证
因此,要强制AWSCLI从~/.aws/
中的凭据/配置文件中读取默认配置,请不要在命令行中提供--profile
,也不要设置AWS_PROFILE或AWS_ACCESS_KEY_ID环境变量。
查看配置设置和优先级。
另外,我在AWS CLI支持的环境变量中没有看到AWS_DEFAULT_PROFILE。我相信它在一段时间以前就被弃用了,取而代之的是AWS_PROFILE。