繁体   English   中英

如何临时切换 AWS CLI 的配置文件?

[英]How to temporarily switch profiles for AWS CLI?

更新的答案 (7/10/2021):对于 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”附加到每个命令,这很乏味。

(5.)

echo $AWS_PROFILE

产量:

>> user2

,正如预期的那样。

知道这里发生了什么吗? 我确定我在某个地方犯了一些愚蠢的错误。

对于 AWS CLI v1,最干净的解决方案是:

export AWS_DEFAULT_PROFILE=user2

之后,命令如下:

aws s3 ls

...从适当的帐户处理。

对于 AWS CLI v2,以下内容将起作用:

export AWS_PROFILE=user2

你可以看到它是如何工作的

$ export AWS_PROFILE=myprofile
$ aws s3 ls --debug 2>&1 | grep profile
2018-04-08 19:19:17,990 - MainThread - botocore.session - DEBUG - Loading variable profile from environment with value 'myprofile'.

我怀疑这对你的工作方式不同。

您还可以验证

$ AWS_PROFILE=myprofile aws s3 ls --debug 2>&1 | grep profile

$ aws s3 ls --profile myprofile --debug 2>&1 | grep profile

都给出相同的结果。

接受的答案假定您使用的是 Linux 或 Mac 终端。 我为两个操作系统添加了命令。

视窗

set AWS_PROFILE=profile_name

Linux 或 Mac

export AWS_PROFILE=profile_name

这些将设置您每次执行 aws 命令时将使用的 aws 配置文件。 但是,如果您只想为一个 aws 命令临时切换配置文件。

aws [command] [sub-command] --profile [profile-name]

AWS cli 有 3 级读取变量的方式

  • key_id / key_secret 的环境变量
  • 通过 cred/config 配置文件(通常在 ~/.aws/cre...)
  • 内联提供手动值

请参阅: https : //docs.aws.amazon.com/cli/latest/topic/config-vars.html#credentials

一种方式将被另一种方式覆盖。 基于 OP,虽然 DEFAULT_PROFILE 设置为 userX,但 AWS_ACCESS_KEY_ID 和/或 AWS_SECRET_ACCESS_KEY 环境变量设置为其他内容。

您可以为 shell 函数做一个别名,通过使用将凭据加载到当前环境

"export AWS_ACCESS_KEY_ID=XXXXXXX;"... and more

或者通过秘密管理器更安全地加载

"export AWS_ACCESS_KEY_ID=$(aws configure get aws_access_key_id --profile XXXX)"... and more

导出所有访问密钥/机密等,然后检查是否通过内存加载了正确的凭据

aws configure list

最后.. 将变量重置为“默认”.. 作为一个好习惯,以确保您作为 AWS 角色执行您需要的操作; 尤其是在使用多个配置文件时。 希望这可以帮助。

user@machine:~/.aws$ aws --version
aws-cli/2.1.2 Python/3.7.3 Linux/5.4.0-53-generic exe/x86_64.linuxmint.20

如果我有很多命名配置文件,我会向我的.bashrc添加别名。

例如:

alias harry-tuttle='export AWS_PROFILE=harry-tuttle'

然后切换配置文件成为一个命令,输入更少。

要查看您的所有个人资料:

aws configure list-profiles`

您可以添加profile标志

aws s3 ls --profile marketingadmin

对于窗户使用

set AWS_DEFAULT_PROFILE=user2

创建或编辑此文件:

% vim ~/.aws/credentials

列出任意数量的密钥对:

[default]
aws_access_key_id=AKIAIOSFODNN7EXAMPLE
aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

[user1]
aws_access_key_id=AKIAI44QH8DHBEXAMPLE
aws_secret_access_key=je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY

包括--profile user1来选择一个配置文件并做你喜欢做的事情:

aws s3api list-buckets --profile user1
# any aws cli command now using user1 pair of keys

更多详情: https : //docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM