如何从命令行使用多个AWS账户?

Mat*_*eth 90 amazon-ec2 amazon-web-services

我在Amazon EC2上有两个不同的应用程序(第二个即将上市).

如何在命令行(Mac OS X)中使用这两个帐户,但保持EC2密钥和证书分开?在每个ec2-*命令之前,我是否需要更改环境变量?

会使用别名并将其设置为环境在线工作吗?就像是:

别名ec2-describe-instances1 = export EC2_PRIVATE_KEY =/path; EC2-描述,实例

小智 247

您可以通过在aws命令行上创建两个配置文件来使用两个帐户.它将提示您输入AWS访问密钥ID,AWS秘密访问密钥和所需区域,以便准备好它们.

例子:

$ aws configure --profile account1
$ aws configure --profile account2
Run Code Online (Sandbox Code Playgroud)

然后,您可以通过在命令上传递配置文件来在帐户之间切换.

$ aws dynamodb list-tables --profile account1
$ aws s3 ls --profile account2
Run Code Online (Sandbox Code Playgroud)

注意:

如果您将配置文件命名为default它将成为默认配置文件,--profile命令中没有参数时.


更多关于默认配置文件

如果您花费更多时间使用account1,则可以通过设置AWS_DEFAULT_PROFILE环境变量将其设置为默认值.设置默认环境变量时,无需在每个命令上指定配置文件.

Linux,OS X示例:

$ export AWS_DEFAULT_PROFILE=account1
$ aws dynamodb list-tables
Run Code Online (Sandbox Code Playgroud)

Windows示例:

$ set AWS_DEFAULT_PROFILE=account1
$ aws s3 ls
Run Code Online (Sandbox Code Playgroud)

  • 要配置区域 - 这是区域“代码”列表 - http://docs.aws.amazon.com/general/latest/gr/rande.html (2认同)

BG *_*uno 48

也许它仍然可以帮到某人.您可以手动设置它.

1)设置文件

~/.aws/credentials
Run Code Online (Sandbox Code Playgroud)

这个

[default]
aws_access_key_id={{aws_access_key_id}}
aws_secret_access_key={{aws_secret_access_key}}

[{{profile_name}}]
aws_access_key_id={{aws_access_key_id}}
aws_secret_access_key={{aws_secret_access_key}}
Run Code Online (Sandbox Code Playgroud)

2)设置文件

~/.aws/config
Run Code Online (Sandbox Code Playgroud)

这个

[default]
region={{region}}
output={{output:"json||text"}}

[profile {{profile_name}}]
region={{region}}
output={{output:"json||text"}}
Run Code Online (Sandbox Code Playgroud)

3)使用AWS Command Line进行测试,命令和输出将为JSON

aws ec2 describe-instances --profile {{profile_name}}
Run Code Online (Sandbox Code Playgroud)

参考

http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html#cli-multiple-profiles

  • @iBrianCox——最好将此信息合并到最受好评的答案(/sf/answers/2397223741/)中,因为它允许用户了解如何将设置从一个配置文件移动到另一个配置文件,例如,您开始时仅使用默认配置文件,并希望继续使用专用的独立配置文件。 (2认同)

ox.*_*ox. 21

创建或编辑此文件:

vim ~/.aws/credentials
Run Code Online (Sandbox Code Playgroud)

列出任意数量的密钥对:

[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
Run Code Online (Sandbox Code Playgroud)

设置一个局部变量来选择您要使用的键对:

export AWS_PROFILE=user1
Run Code Online (Sandbox Code Playgroud)

你喜欢什么:

aws s3api list-buckets  # any aws cli command now using user1 pair of keys
Run Code Online (Sandbox Code Playgroud)

--profile user1您还可以通过包含每个命令来逐个命令地执行此操作:

aws s3api list-buckets --profile user1
# any aws cli command now using user1 pair of keys
Run Code Online (Sandbox Code Playgroud)

更多详细信息:AWS CLI 的命名配置文件


vla*_*adr 14

您应该能够使用以下命令选项代替EC2_PRIVATE_KEY(甚至EC2_CERT)环境变量:

  • -K <private key>
  • -C <certificate>

您可以将这些放在别名中,例如

alias ec2-describe-instances1 ec2-describe-instances -K /path/to/key.pem
Run Code Online (Sandbox Code Playgroud)


oz1*_*z19 8

恕我直言,最简单的方法是手动编辑.aws/credentials.aws/config文件。

它很简单,适用于 Linux、Mac 和 Windows。请阅读本文了解更多详情(阅读 1 分钟)

.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
Run Code Online (Sandbox Code Playgroud)

.aws/config 文件:

[default]
region=us-west-2
output=json

[profile user1]    <-- 'profile' in front of 'profile_name' (not for default)!!
region=us-east-1
output=text
Run Code Online (Sandbox Code Playgroud)


chr*_*ris 6

新的aws工具现在支持多个配置文件.

如果使用工具配置访问权限,它会自动在〜/ .aws/config中创建默认值.

然后,您可以添加其他配置文件 - 更多详细信息:

http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html#cli-multiple-profiles