🪖
pecoを活用してzshでのAWSプロファイル切り替えを効率化する
インタラクティブなフィルタリングツールのpecoを活用して、zshでのAWSプロファイルの切り替えを効率化しました。
背景と課題
AWS CLIでは、credentials
ファイルに複数の名前付きプロファイルを保存できます。
~/.aws/credentials
[default]
aws_access_key_id=EXAMPLE
aws_secret_access_key=EXAMPLEKEY
[user1]
...
[user2]
...
[user3]
...
このプロファイルを切り替えるときは、以下のようにして環境変数を設定するか、コマンドに--profile
オプションを追加して実行します。
$ export AWS_PROFILE=user1
または
$ aws ec2 describe-instances --profile user1
複数のプロファイルを切り替えながら作業する場合、zshの補完が効いたとしても、切り替えが少し面倒です。
ゴール
インタラクティブなフィルタリングツールのpecoを活用して、AWSプロファイルをインタラクティブに選択できるようにします。
pecoの動作イメージ。上下キーでプロファイルを選択できる
設定方法
環境
- zshにpecoを導入済みであること。
- インストール方法はこちらの記事が詳しいです。
- AWSプロファイル情報を
credentials
ファイルに保存済みであること。- 設定方法はAWS公式ドキュメントを確認してください。
手順
aws configure list-profiles
コマンドを利用すると、プロファイル名を一覧表示できます。
$ aws configure list-profiles
default
user1
user2
user3
これをパイプでpecoに渡すと、プロファイル名をインタラクティブに選択できます。
$ aws configure list-profiles | peco
QUERY> user IgnoreCase [3 (1/1)]
user1
user2
user3
この仕組みを利用して、選択したプロファイルに切り替えられるように設定します。~/.zshrc
に以下のような設定を追加します。
.zshrc
# aws profileの補完
function peco-aws () {
local selected_profile=$(aws configure list-profiles | peco --query "$LBUFFER")
if [ -n "$selected_profile" ]; then
BUFFER="export AWS_PROFILE=${selected_profile} export RPROMPT=AWS:${selected_profile}"
zle accept-line
fi
zle clear-screen
}
zle -N peco-aws
bindkey '^g^a' peco-aws
これで、ターミナル上でCtrl+GA
を入力することでpecoを起動できるようになります。選択中のプロファイルを右プロンプトに表示させるようにしています。
プロファイルを選択した後の画面
ただ、aws configure list-profiles
の実行に数秒程度かかる場合があり、pecoの実行にタイムラグが生じてしまうのが難点です。
おまけ
AWSコンソール上でスイッチロールする際は、Chrome拡張を使って切り替えできるようにしています。こちらもオススメです。
参考文献
Discussion