簡単に 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 のプロフィール選択状態が反映されます。
プロンプトに表示される文字色が気に入らない場合は、下記のblue
やyellow
の部分を好きな色に変更してください。
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