はじめに
AWS関連ツールでは名前付きプロファイルによって認証情報を切り替えることができます。
しかし、ときどきこのプロファイルに対応していないツールがあり、その場合は個別にアクセスキーIDとシークレットアクセスキーを渡す必要があります。
その都度キーを設定するのはイマイチなので、direnvでプロファイル名を指定するとAWS CLIの設定から情報を取り出して環境変数に設定してくれる設定を用意しました。
direnvの設定
設定は~/.config/direnv/direnvrc
に行います。
~/.config/direnv/direnvrc
use_aws_profile() {
profile_name=$1
export AWS_DEFAULT_PROFILE=$profile_name
export AWS_PROFILE=$profile_name
export AWS_ACCESS_KEY_ID=$(aws configure --profile $profile_name get aws_access_key_id)
export AWS_SECRET_ACCESS_KEY=$(aws configure --profile $profile_name get aws_secret_access_key)
export AWS_DEFAULT_REGION=$(aws configure --profile $profile_name get region)
export AWS_REGION=${AWS_DEFAULT_REGION}
}
AWS CLIのconfigure
サブコマンドを利用して値を取り出しています。
使い方
この設定を行ったあと、必要な場所でdirenv edit
で次のように設定すると自動でロードされるようになります。
.envrc
use aws_profile <プロファイル名>
use_aws_profile
ではなく、use aws_profile
になっているのは、direnvではuse_
プレフィックスの付いた関数はこのようにuse <関数名のプレフィックス以降>
で呼び出すことができるためです。
これで毎回キーを指定する手間が省けるだけでなく、キーを再生成することになってもプロファイル側に設定したキーを変更するだけで済みます。