2
0

More than 1 year has passed since last update.

fzfを用いてAWS CLIプロファイル簡単切り替え

Last updated at Posted at 2021-09-25

簡単に aws cli のプロファイルを変更したい

表題の件について調べたところ、該当する npm パッケージを発見。
https://github.com/johnnyopao/awsp

しかし当方のnode v14環境で正常に動作しなかったので、fzf で関数自作しました。

fzf

fzf とは、cli 上でのあいまい検索および結果選択が可能になる、GO 製の CLI ツールです。
peco とよく比較されます。
詳細は以下記事等参照
https://qiita.com/kamykn/items/aa9920f07487559c0c7e

fzf のインストール

$ git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
$ ~/.fzf/install

シェル設定ファイルに関数追加

~/.aws/configを参照して、profile 一覧を取得し、その中からプロファイルを fzf で選択する、という挙動の関数を作成します。
.bashrc.zshrcに以下関数定義を追記します。

Linux 用

function awsp() {
  local profile=$(grep -o -P '(?<=\[profile )[^\]]+' ~/.aws/config | sort | fzf )
  export AWS_PROFILE="$profile"
}

Mac では aws コマンドで実装defaultが選択肢に含まれてしまうが、妥協)

function awsp() {
  local profile=$(aws configure list-profiles | sort | fzf )
  export AWS_PROFILE="$profile"
}

(2021/10/1 追記)
単純に sed を加えれば、default非表示にできる

function awsp() {
  local profile=$(aws configure list-profiles | sed "/default/d" | sort | fzf )
  export AWS_PROFILE="$profile"
}

自作 fzf 関数を呼び出して AWS CLI プロファイルを切り替え

関数定義後に、シェル再起動(exec $SHELL -l)や設定ファイル再読み込み(source ~/.zshrc)を実施しシェルに反映させます。
あとは、シェルでawspコマンドを打つだけでプロファイルを切り替えられるようになります。

余談 1:zsh プロンプトに aws profile 選択状態を表記

本家 awsp のレポジトリの README.md 参照に書けます。以下を.zshrcに追記してシェルに反映させることで、プロンプトに aws cli のプロフィール選択状態が反映されます。
プロンプトに表示される文字色が気に入らない場合は、下記のblueyellowの部分を好きな色に変更してください。
black, red, green,yellow,blue,magenta, cyan, whiteが指定できます。
https://wiki.archlinux.org/title/zsh#Colors

autoload -Uz colors
colors
function aws_prof {
  local profile="${AWS_PROFILE:=default}"
  echo "%{$fg_bold[blue]%}aws:(%{$fg[yellow]%}${profile}%{$fg_bold[blue]%})%{$reset_color%} "
}
PROMPT+="\$(aws_prof)

余談 2: aws cli が参照する環境変数

上記の実装内容通りですが、aws cli は環境変数$AWS_PROFILEの値を参照してプロファイル設定に反映させます。
このとき~/.aws/configの[default]プロファイルを使用する動作は上書きされます。
--profileオプション付きのコマンド実行では、コマンドラインパラメータが優先されます。

他にも色々な環境変数を設定値として参照できたりします。
https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-configure-envvars.html

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0