コマンドラインから複数のAWSアカウントを使用するにはどうすればよいですか?


114

私はAmazon EC2でホストしている2つの異なるアプリを持っています(2番目のアプリはもうすぐ起動します)。

コマンドライン(Mac OS X)で両方のアカウントを操作しながら、EC2キーと証明書を個別に保持するにはどうすればよいですか?各ec2- *コマンドの前に環境変数を変更する必要がありますか?

エイリアスを使用して、それを環境の設定にインラインで機能させることはできますか?何かのようなもの:

エイリアスec2-describe-instances1 = EC2_PRIVATE_KEY = / pathをエクスポートします。ec2-describe-instances

回答:


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コマンドラインで2つのプロファイルを作成することで、2つのアカウントを操作できますAWSアクセスキーID、AWSシークレットアクセスキー、目的のリージョンの入力を求められるので、準備してください。

例:

$ 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 2018年

@slm上記の私のコメントを読んでください(コメントごとに1つの言及しかできません
でした

@mgd提案に感謝しますが、いいえ-最初はその答えは私のものではないためです。次に、これは設定方法が異なります
BG BRUNO

@mgd Q「コメントごとに1つのメンション」とはどういう意味ですか?
BG BRUNO 2018年

私が意味したことは、最初のコメントでiBrianCoxとslm(それぞれ他の回答の作成者と編集者)の両方に言及するつもりでしたが、コメントごとに1つの言及しか行えないため、両方に言及するために別のコメントを追加する必要がありました。 。あなたの答えは別のアプローチであることは正しいですが、特にプロファイル間で設定をコピーする場合は、情報が保存されている場所を知ることは非常に役立ちます。
mgd 2018年


0

ユーザー入力に基づいて、各アカウントの環境変数の対応する値を設定するシェルスクリプトを記述できます。そうすることで、エイリアスを作成する必要はありません。さらに、ELBツールやAuto Scalingコマンドラインツールなどのツールは、複数のアカウントでも機能します。


0

AWSアカウントを切り替えるためのシンプルなツールaawsを作成しました。

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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.