direnv で AWSのIAMアカウントを自動的に切り替える
複数の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 ..
などで上の階層を読み込むとよい。