aws-cliのprofile機能
複数アカウントを利用する際は危険
__複数案件__をこなしていると、aws-cli
にて__複数のアカウント情報__を取り扱うことが出てくると思います。
その際に、各認証情報__を__正確に区別__する必要があり、間違って別の認証情報を使ってAWSサービスを操作してしまうと大問題__になってしまします。
cliでの基本的な認証処理
aws-cli
を使う場合、ホーム直下の.aws
ディレクトリにある認証情報は.config
ファイルと.creadincails
ファイルに記載します。
~
└── .aws
├── .config
└── .credentials
上記ファイルは、aws configure
コマンドで作成するも良いですし、__物理的__にファイルを作成してもどちらでも問題ありません。
__実行ユーザー__の~/.aws/
内の上記ファイルを利用して認証処理を行います。
__記載内容__は以下が基本です。
[default]
output = json
region = {リージョン}
[default]
aws_access_key_id = {アクセスキー}
aws_secret_access_key = {シークレットキー}
認証情報の複数管理方法
aws-cli
にはこのようなケースを考えて、__profile機能__があります。
profile機能を知らなかった僕
以下のように__各ファイル__を管理し、
~
└── .aws
├── .config.hoge
├── .credentials.hoge
├── .config.fuga
└── .credentials.fuga
__cpコマンド__で都度コピーし
cp ~/.aws/.config.hoge ~/.aws/.config
cp ~/.aws/.credentials.hoge ~/.aws/.credentials
作業が終わったら__rmコマンド__で消していました。。。。(お恥ずかしい・・・orz)
rm ~/.aws/.config
rm ~/.aws/.credentials
profile機能を知った僕
ディレクトリとしては、各ファイル(config/credentials)を__それぞれ一つずつ__管理します。
~
└── .aws
├── .config
└── .credentials
その上で、以下のようにセクションを__各認証情報毎__に分けて、各情報を記述します。
[profile hoge]
output = json
region = {リージョン}
[profile fuga]
output = json
region = {リージョン}
[default]
output = json
region = {リージョン}
[hoge]
aws_access_key_id = {アクセスキー}
aws_secret_access_key = {シークレットキー}
[fuga]
aws_access_key_id = {アクセスキー}
aws_secret_access_key = {シークレットキー}
[default]
aws_access_key_id = {アクセスキー}
aws_secret_access_key = {シークレットキー}
上記のように__.config__では[profile {profile}]
、__.credentials__では[{profile}]
のように__セクション(profile)__指定します。
その上で、__コマンド実行時__に
aws ~~~ --profile ${profile}
と--profile
オプションで__セクション(profile)__を指定することで、各ファイルに指定した__セクション(profile)__毎の設定を利用して操作をしてくれます。
しゅごい。
ちなみに、--profile
オプションをつけ忘れると、[default]セクション(profile)の設定が利用されるので、複数の認証情報を扱い場合は__defaultセクション__は指定せず、__必ず--profileで意図的に指定する__運用にした方が良いかと思われます!