direnv で AWSのIAMアカウントを自動的に切り替える

f:id:ringo6119:20180103185413p:plain

複数のAWS IAMアカウント(例えば会社用と自分用)を使っているときに、間違って他のアカウントを使わないようにしたい。「--profile」オプションで環境を切り替える事もできるが、付け忘れたりするリスクがある。

試行錯誤・運用した結果、ホームディレクトリに「~/.aws/credentials」を置かず、 direnv を使って環境変数で設定する方法に落ち着いた。

direnvのインストール方法とかはこちらを参考に。

.envrcをどこに配置するか

大抵、該当のリポジトリに移動してから作業を行うため、リポジトリに配置してもよい。しかし、複数のリポジトリで同じAWSアカウントを使いたいこともあるので、Organizationのレベルに .envrc を配置している。

~
├── github.com
│  ├── .envrc
│  ├── bar
│  └── foo
└── github.office.example.com
   ├── .envrc
   ├── baz
   └── qux

.envrc の中身については以下の通り。

export AWS_ACCESS_KEY_ID='xxxxxxxxxxxxx'
export AWS_SECRET_ACCESS_KEY='xxxxxxxxxxxxxxx'

必要であれば source_env .. などで上の階層を読み込むとよい。

References