更新答复(2021年7月10日):对于AWS CLI v1,请执行以下操作:
export AWS_DEFAULT_PROFILE=user2
对于AWS CLI v2,以下操作将起作用:
export AWS_PROFILE=user2
完整问题的背景如下:
(1.)在为AWS CLI成功配置第二个配置文件后,我尝试在bash会话中使用以下命令将配置文件设置为user2,但没有成功:
export AWS_PROFILE=user2
......根据此处的建议:https://docs.aws.amazon.com/cli/latest/userguide/cli-multiple-profiles.html
(2.)以下命令有效:
aws s3 ls --profile user2
所以我知道AWS CLI和user2配置文件都在我的计算机上工作。
(3.)但是,当我随后(即,在输入"export AWS_PROFILE = user2"之后)尝试类似这样的操作时:
aws s3 ls
... AWS的响应假设我想以默认用户(而不是user2)身份查询它
(4.)因此,我可以从命令行使用user2配置文件的唯一方法是继续在每个命令后面附加"--profile user2",这是非常繁琐的。
(五)
echo $AWS_PROFILE
产量:
>> user2
,不出所料。
你知道这是怎么回事吗?我肯定在哪里犯了什么愚蠢的错误。
8条答案
按热度按时间vdgimpew1#
对于AWS CLI v1,最干净的解决方案是:
之后,命令如下:
......从适当的帐户进行处理。
对于AWS CLI v2,以下操作将起作用:
vwhgwdsa2#
可接受的答案假设您使用的是Linux或Mac终端。我添加了用于Windows、Linux和Mac OS的命令。
窗口
指令
set AWS_PROFILE=profile_name
动力 shell
$env:AWS_PROFILE = 'profile_name'
Linux或Mac
export AWS_PROFILE=profile_name
这些将设置你的aws配置文件,你将使用每次你执行一个aws命令。但如果你只是想切换配置文件临时为一个aws命令。
aws [command] [sub-command] --profile [profile-name]
3htmauhk3#
您可以看到它是如何工作的
我怀疑这对你来说有什么不同。
您还可以验证
以及
都给予相同的结果。
yftpprvb4#
AWS cli有3种读取变量的方式
参见:www.example.comhttps://docs.aws.amazon.com/cli/latest/topic/config-vars.html#credentials
一种方式将被另一种方式覆盖。根据OP,虽然DEFAULT_PROFILE被设置为userX,但AWS_ACCESS_KEY_ID和/或AWS_SECRET_ACCESS_KEY环境变量可能被设置为其他值。
您可以为shell函数设置别名,该函数通过使用将凭据加载到当前环境
或者经由秘密管理器更安全地加载
导出所有访问密钥/密码等,然后检查是否通过将正确的凭据加载到内存中
最后,将变量重置为"默认值",这是一个好习惯,可确保您作为AWS角色执行所需的操作;特别是在使用多个配置文件时。希望这有帮助。
jdg4fx2g5#
如果我有很多已命名的配置文件,我会在 *. bashrc * 中添加别名。
例如:
这样,切换配置文件就变成了一个输入较少的命令。
要查看您的所有个人资料:
njthzxwz6#
供Windows使用
gdrx4gfi7#
创建或编辑此文件:
列出任意数量的密钥对:
包括
--profile user1
以选择配置文件并执行您喜欢操作:...或者...
设置一个局部变量来选择要使用的键对:
然后做你喜欢的事
更多详情:https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html
monwx1rj8#
You could add the
profile
flag