【AWS】AWS CLIにて複数アカウントを使い分ける方法
AWSの設定などはブラウザのGUIを用いてやるより、なんとなくCLIでやりたくなる私。 賛否両論あるが、プログラマーの中では、やはりCLIが早いし、痒い所に手が届く感じの安心感があるらしい。(まだその実感はないが、CLIの方がカッコいいよねw)
ただ、会社、個人、社外のプロジェクトなどに参画すると、様々なAWSアカウントを持つことになる。そこで、今回はAWS CLI上での複数アカウントの使い分け方法をご紹介する。
AWS CLIとは
AWS コマンドラインインターフェース (CLI) は、AWS サービスを管理するための統合ツールです。ダウンロードおよび設定用の単一のツールのみを使用して、コマンドラインから複数の AWS サービスを制御し、スクリプトを使用してこれらを自動化することができます。 Amazon
CLIのメリットとしては、ただカッコいいだけじゃなく、以下が挙げられる。
- 情報共有のしやすさ(GUIの場合、視覚的に把握しやすいものの、操作方法の共有が容易ではない。しかしながら、CLIの場合はコマンドのみで適切な情報を即座に得ることができる。)
- AWS上の操作の自動化ができる
- AWS上のサービスと連携したツールの作成が可能になる
上記を考慮すると、やはりGUIより、CLIの方が断然作業効率がいい。(また、GUIはバージョンのアップデートでUIが変わることもあり、時々「あれ?あれはどこだっけ?」となることもあるw)
AWS複数アカウントの運用方法
さて、本題であるAWS CLIでの複数アカウントの運用は、profileという機能を使うことで簡単にできる。(最初はこれを知らず、認証エラーが出ていたので、毎度config / credentialsのファイルを消したりしていました。。。運用管理方法がやばいw無知って怖いですね。)
認証情報
AWS CLI は aws configure
で指定された認証情報を、ホームディレクトリの .aws という名前のフォルダにある credentials という名前のローカルファイルに保存する。
~/.aws |- credentials |- config
各ファイルの基本的な構成は以下の通りである。
credentialsに複数のアカウントの認証情報をプロファイルに分けて記入する。
[{プロファイル名}]
configに各プロファイルのリージョン情報と出力形式を記入する。
[profile {プロファイル名}]
[default] //プロファイル名 aws_access_key_id=AKIAIOSFODNN7EXAMPLE //IAMユーザーのアクセスキー aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY //IAMユーザーのシークレットキー [companyName] aws_access_key_id=AKIAI44QH8DHBEXAMPLE aws_secret_access_key=je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY
[default] region=us-west-2 // リージョン情報 output=json [profile companyName] region=us-east-1 output=json
使用方法
名前付きプロファイルを使用するには、コマンドに --profile ${profileName} オプションを追加する。
aws (command) --profile ${profileName}
profileオプションをつけない場合は、 default
が適用される。
AWSの複数アカウントをAWS CLIで運用する場合は、間違って意図していないアカウントを操作してしまうことをさけるために、 認証情報の default
を削除して必ずprofileオプションを使わないと認証エラーが出るようにしておくことをオススメする。