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


114

我在Amazon EC2上托管了两个不同的应用程序(第二个即将发布)。

如何在命令行(Mac OS X)上同时使用两个帐户,但将EC2密钥和证书分开?我需要在每个ec2- *命令之前更改我的环境变量吗?

是否使用别名并将其用于在线环境设置?就像是:

别名ec2-describe-instances1 = export EC2_PRIVATE_KEY = / path; ec2-describe-instances

Answers:


17

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

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

您可以将它们放在别名中,例如

alias ec2-describe-instances1 ec2-describe-instances -K /path/to/key.pem

309

您可以通过在aws命令行上创建两个配置文件来使用两个帐户。它将提示您输入AWS Access Key ID,AWS Secret Access Key和所需区域,因此请准备好它们。

例子:

$ aws configure --profile account1
$ aws configure --profile account2

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

$ aws dynamodb list-tables --profile account1
$ aws s3 ls --profile account2

注意:

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


有关默认配置文件的更多信息

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

Linux,OS X示例:

$ export AWS_DEFAULT_PROFILE=account1
$ aws dynamodb list-tables

Windows示例:

$ set AWS_DEFAULT_PROFILE=account1
$ aws s3 ls

配置区域-这是区域“代码”列表-docs.aws.amazon.com/general/latest/gr/rande.html
arcseldon

65

也许它仍然可以帮助某人。您可以手动设置。

1)设置文件

~/.aws/credentials

这个

[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}}

2)设置文件

~/.aws/config

这个

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

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

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

aws ec2 describe-instances --profile {{profile_name}}

参考

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


2
@iBrianCox-最好将此信息合并到最受好评的答案中(stackoverflow.com/a/34246053/1199564),因为它允许用户了解如何将设置从一个配置文件移动到另一个配置文件,例如,当您开始时仅使用默认配置文件,并希望继续使用专用的单独配置文件。
mgd

@slm请阅读我的上述评论(每条评论只能提及一个评论)
mgd

@mgd谢谢您的建议,但不是-因为起初答案不是我的-其次是如何设置它的另一种方法
BG BRUNO

@mgd问:您能否进一步描述您的意思是“每条评论一个提及”?
BG BRUNO

我的意思是,在我的第一个评论我打算提这两个 iBrianCox和SLM(作者分别对对方的回答主编),但你只能做每评论一个提及,所以我不得不增加一个评论,以同时提及。您的回答是不同的方法是正确的,但是了解信息的存储位置非常有帮助,特别是如果您打算在配置文件之间复制设置。
mgd 18'Mar


0

您可以编写shell脚本,以根据用户输入为每个帐户设置环境变量的相应值。这样做,您无需创建任何别名,此外,ELB工具,Auto Scaling命令行工具等工具也可以在多个帐户下工作。


0

我创建了一个简单的工具,aws,以在AWS账户之间切换。

通过AWS_DEFAULT_PROFILE在您的外壳中设置,它可以工作。只要确保您的~/.aws/credentials文件中有一些条目,它就可以轻松在多个帐户之间切换。

/tmp
$ aws s3 ls
Unable to locate credentials. You can configure credentials by running "aws configure".
/tmp
$ aaws luk3

[luk3] 🔐 /tmp
$ aws s3 ls
2013-11-05 21:40:04 luk3thomas.com
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.