direnvでAWSの名前付きプロファイル($HOME/.aws/config)をディレクトリに沿って自動的に指定する
1.この記事で達成したいこと $HOME/.aws/configに書かれた名前付きプロファイルをイイ感じに使いたい ディレクトリごとに指定できるようにしたい AWS_DEFAULT_PROFILEを都度exportするのは面倒なので避けたい $ export AWS_DEFAULT_PROFILE=user1 2.前提/環境情報 $ grep VERSION= /etc/os-release VERSION="20.04.3 LTS (Focal Fossa)" $ direnv --version 2.21.2 3. どうやるか? direnvを使う direnvとは、ディレクトリに移動した際、自動で記載されている環境変数を読み込んでくれるもの direnvを使うことでできること ディレクトリ/環境に適したAWS_PROFILEを指定すること 前提として、$HOME/.aws/configに以下のように書かれていること [default] region=us-west-2 output=json [profile user1] region=us-east-1 output=text 出所:名前付きプロファイル - AWS Command Line Interface 4.使い方 aptでdirenvをインストール ※Installation | direnv では紹介されていなかった。。 Setup | direnv に従って ~/.bashrc を編集 $ apt search direnv | tail WARNING: apt does not have a stable CLI interface. Use with caution in scripts. Full Text Search... direnv/focal,now 2.21.2-1 amd64 [installed] ## <-- direnvがあった Utility to set directory specific environment variables extrace/focal 0.7-1 amd64 trace exec() calls system-wide ondir/focal 0.2.3+git0.55279f03-1 amd64 Automate tasks specific to certain directories in the shell $ sudo apt install direnv $ tail -n 1 ~/.bashrc eval "$(direnv hook bash) direnvを使いたいディレクトリ直下で、direnv edit . を実行し、使いたいプロファイルを書く $EDITORの値がないとエラーを引いたら、export $EDITOR=vimなどと$EDITORの値をセットすればok $ direnv edit . $ cat .envrc export AWS_PROFILE=user1 $ direnv edit . direnv: $EDITOR not found. direnv: error exit status 1 $ echo "export $EDITOR=vim" >> ~/.bashrc && source ~/.bashrc direnv allow で読み込みができるようにする $ direnv allow direnv: loading /path/to/.envrc direnv: export +AWS_PROFILE 動作確認 $ cd /path/to direnv: loading /path/to/.envrc direnv: export +AWS_PROFILE ## ディレクトリを離れると $ cd .. direnv: unloading 5.参考 名前付きプロファイル - AWS Command Line Interface Installation | direnv Setup | direnv