AWS CLI のプロファイルをディレクトリごとに自動で切り替えたい
AWS のアカウントが増えてきた
AWS CLI を利用する際、アカウントがひとつなら何も考えないでよいのですが、 顧客のアカウントで操作する場合や複数のプロジェクトで異なるアカウントを使わなければ行けない場合など、 AWSの普及に伴って複数のアカウントを使い分ける必要が出てきました。 そんな時に使える設定方法と切り替え自動化のお話です。
AWS CLI のプロファイルを複数登録する
通常、AWS CLIの設定を作る場合:
$ aws configure
別のプロファイルを追加したくなったら:
$ aws configure --profile john
環境変数で指定することもできます:
$ export AWS_PROFILE=john
$ aws ec2 describe-instances
ディレクトリごとに使用するプロファイルを自動で選択する
しかし、いちいちオプションを記述しないといけないのがめんどくさいし、間違ったアカウントで操作して大惨事になる危険性もあります。
そんなときは、 direnv
におまかせして、ディレクトリごとに自動で切り替えてしまいます。
direnv
は、ディレクトリ毎に環境変数を定義でき、cd
でカレントになった時だけ環境変数を有効にしてくれるツールです。
インストール(Ubuntu):
$ sudo apt install direnv
Bashのフックに登録:
$ echo 'eval "#(direnv hook bash)"' >> ~/.bashrc
ディレクトリに環境変数を設定:
$ cd john
$ direnv allow
$ direnv edit .
.envrc
というファイルに保存されます。テキストエディタやtouch
コマンドで作成してもよいです。
AWS CLIのプロファイルを設定したい場合は、AWS_PROFILE
の設定を記述:
$ echo "export AWS_PROFILE=john" >> .envrc
とても便利です。ぜひ。