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 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.参考