direnvの設定方法
direnvとはディレクトリ毎に環境変数を定義し特定のディレクトリに移動したときのみ環境変数を有効化できるツールである。
例えばAWSアカウントのアクセスキー/シークレットキーの情報をディレクトリ毎を設定することで、ディレクトリに移動してきたタイミングで自動でこれらのキーを環境変数として設定することができ、AWS CLIを実行できる環境を素早く用意することができる。
逆にdirenvを設定しないとAWSアカウントの切り替えの度に環境変数を設定し直す必要がでてくる。
この記事ではディレクトリ毎にAWSアカウントのアクセスキー/シークレットキーの情報を登録し、実際にAWS CLIを実行できる環境を用意する方法を説明する。
1. brewコマンドでdirenvをインストール
$ brew install direnv
2. whichコマンドdirenvの存在確認
$ which direnv /usr/local/bin/direnv
3. ホームディレクトリにある .bashrc を開く
$ vi ~/.bashrc
4. .bashrcの最下行に下記を追加
eval "$(direnv hook bash)"
5. 設定反映
$ source ~/.bashrc
6. ディレクトリを作成して移動
$ mkdir ~/direnv $ cd direnv
7. aws configureを設定
$ aws configure --profile 任意の名前
8. アクセスキー・シークレットキーを入力
【入力例】
AWS Access Key ID [None]:xxxxxxxxxx AWS Secret Access Key [None]:yyyyyyyyyy Default region name [None]:ap-northeast-1 ←<そのままenter> 入れてもOK Default output format [None]:ここは空欄でもOK
9. 情報を取得できるか確認
下記のように出力されていればOK。
$ aws sts get-caller-identity --profile 手順7で入力した名前 { "Account": "アカウントID", "UserId": "XXXXXXXXXXXXXXX", "Arn": "arn:aws:iam::アカウントID:user/IAMユーザー名" }
10. 作業用のディレクトリを作成し移動
$ mkdir 作業用のディレクトリ名 $ cd 作業用のディレクトリ名
11. アカウント用のディレクトリに移動後.envrc を作成
$ vi .envrc
12. .envrcの中に下記内容を入力
export AWS_DEFAULT_PROFILE=手順7で入力した名前 export AWS_PROFILE=$AWS_DEFAULT_PROFILE export AWS_REGION=リージョン名
13. .envrcの設定が完了すると下記メッセージが表示される
direnv: error .envrc is blocked. Run `direnv allow` to approve its content.
direnv allow
と入力し下記のように表示されればOK
$ direnv allow direnv: loading .envrc direnv: export +AWS_DEFAULT_PROFILE +AWS_PROFILE +AWS_REGION
14. もう一度ホームディレクトリに戻り再度アカウント用ディレクトリに移動
【入力例】
$ cd ~/ direnv: unloading $ cd ~/direnv/作業用のディレクトリ名/ direnv: loading .envrc direnv: export +AWS_DEFAULT_PROFILE +AWS_PROFILE +AWS_REGION
上記のように表示されればOK
15. 動作確認
aws sts get-caller-identity
コマンドで設定内容が意図したものであるか確認する。
CLI実行前には aws ec2 describe-instances --region ap-northeast-1
コマンド等で対象アカウント内のリソース情報が表示されていることを確認し、作業対象が間違っていないことを必ず確認すること。