AWS CLI profileをいい感じに切り替える

背景

AWSアカウントをいくつも使っている場合、~/.aws/configprofile を設定すると思う。

profileの切り替えるためには環境変数 AWS_PROFILE を設定するか、コマンドを打つ度に --profile hoge を付ければ良いが、アカウントの数が増えて、かつ profile の切り替えが多い場合、これらの作業をいちいちやるのは面倒。

既存の解決方法としてawspがあるが、npmをグローバルインストールしないといけないし微妙….

手元にフィルタリングツールのpecoが入っているのでこれを使って何とかしてみる。

実装

このワンライナーを適当なaliasにしておく。

export AWS_PROFILE=$(sed -n "s/\]//g; s/\[profile //gp" ~/.aws/config | peco)

~/.aws/config の中身は大体こんな感じなので [profile hoge] の行から hoge だけを抜き出してpecoに渡す。

[profile hoge]
source_profile = XXX
role_arn = YYY

(場合によっては ~/.aws/config[default] があるのでまず閉じ括弧(])を取り除いてから [profile を取り除いている)

あとがき

もっとシンプルに書く方法ありそう。