[AWS] CLIで複数のIAMを使い分ける

小ネタです。 複数のAWSアカウントを利用していると、1台のPCで複数のIAMをCLIから利用したくなるわけですが、複数のプロファイルを簡単に切り替える方法が用意されているのでメモしておきます。

設定

ここでは foo という名前のプロファイルを作成してみます。AWS CLIをすでに利用している前提です。

A. aws configureで設定するパターン

--profileオプションに追加したいプロファイル名を指定します。あとはいつものように必要な情報を入力するだけです。

$ aws configure --profile foo
AWS Access Key ID [None]: xxxxxxxxxxxxxxxxxxxx
AWS Secret Access Key [None]: nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
Default region name [None]: ap-northeast-1
Default output format [None]: json

B. ファイルを直接編集するパターン

もしくはホームディレクトリ直下にある「.aws」の下にあるファイルを直接編集してもOKです。

~/.aws/credentials

新しく追加するプロファイルを以下のように追加します。現在利用しているdefaultはそのまま残しておきます。

[default]
aws_access_key_id = xxxxxxxxxxxxxxxxxxxx
aws_secret_access_key = nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn

[foo]
aws_access_key_id = yyyyyyyyyyyyyyyyyyyy
aws_secret_access_key = nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn

~/.aws/config

こちらも同様です。「profile (プロファイル名)」と言った感じでプロファイル名の前に profile は付ける必要があります。

[default]
region = ap-northeast-1
output = json

[profile foo]
region = ap-northeast-1
output = json

利用方法

単純に--profileオプションで利用したいプロファイル名を指定するだけです。未指定の場合はdefaultのプロファイルが利用されます。

$ aws s3 ls s3://example.com/ --profile foo

その他

デフォルトのプロファイルを指定する

そもそもデフォルトで利用するプロファイルをfooにしてしまいたい場合、環境変数で指定することができます。

$ export AWS_PROFILE=foo

.bashrc.zshrc などに書いておくと便利ですね。

参考ページ