woshidan's loose leaf

ぼんやり勉強しています

AWS CLIの設定ファイルにて名前付きプロファイルを利用して手軽にAWS CLIのIAMユーザを切り替える

普段業務でAWS CLIを使っているため、業務本番用のアカウントとちょっと個人の調査用のアカウントを分けて使いたいわけですが*1aws configure コマンドで設定できるアカウントは一つだけです。

これではちょっと調査をするたびにクレデンシャル情報を引っ張ってきて入力するのがめんどくさくなるのが目に見えているので他の方法を考えます。

aws configure コマンドで何をしているか

aws configure コマンドで何をしているかというか、 ~/.aws/config~/.aws/credentials にコマンドで与えた引数の入力を行なっています。

入力結果のファイルは下記のような形です。

~/.aws/config

[default]
region = ap-northeast-1

~/.aws/credentials

[default]
aws_access_key_id = ABCDEEGHEXAMPLEKEYID
aws_secret_access_key = ABCdefgHIjkLM/OPQrstUVwxyzAbcsExampleKey

このファイルに何か見出しつけてもう1組書いてやったらできそうですね。

awsの設定ファイルで名前付きプロファイルを使う

[XXX] のように見出しをつけて、認証情報などをその見出しごとに管理でき、これを 名前付きプロファイル と言うそうです。

~/.aws/config

[default]
region = ap-northeast-1

[profile user2] // credentialsと見出しが違うので注意
region=us-east-1
output=text // 出力形式も設定できる

~/.aws/credentials

[default]
aws_access_key_id = ABCDEEGHEXAMPLEKEYID
aws_secret_access_key = ABCdefgHIjkLM/OPQrstUVwxyzAbcsExampleKey

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

このように見出しをつけて、

$ aws ec2 describe-instances --profile user2

のように --profile オプションをつけて実行するか、

$ export AWS_PROFILE=user2

のように環境変数を設定することでaws cliで利用するユーザーアカウントを切り替えることができます。

現場からは以上です。

参考

docs.aws.amazon.com

*1:以前はできたらプライベートAWSの費用も持って欲しい気持ちがあったのですが、いまのところ月50円以下、いっても500円以内ということが判明したので請求する方がめんどくさい、ということでやめた