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