/ #aws #direnv 

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

とても便利です。ぜひ。