本投稿では
Zshを用いてAWS Profileの可視化と切り替えを容易にする方法を説明します。
設定すると以下のようにAWS Profileを可視化・切り替えできるようになります。
複数のAWSルートアカウント/リージョン上にリソースを作成する必要がある方の参考になれば幸いです。
また、もっと良い方法をご存知の方、ぜひ教えてください。よろしくお願いします。
前提
Zshが設定済であることを前提に説明します。
設定方法
1. AWS Profileの可視化
spaceship-promptを利用することで容易にAWS Profileを可視化できます。
以下のコマンドでインストール、
※npm以外にもインストール方法があります。詳細は公式ページをご確認ください。
$ npm install -g spaceship-prompt
~/.zshrc
に以下の設定を追記した後、
autoload -U promptinit; promptinit
prompt spaceship
~/.zshrc
を読み込めば、設定完了です。
$ source ~/.zshrc
後は以下の通り、環境変数を設定すると
$ export AWS_PROFILE=hoge
以下のようにAWS Profileがpromptに表示されます。
2. AWS Profileの切り替え容易化
pecoをインストールします。
※homebrew以外にもインストール方法があります。詳細は公式ページをご確認ください。
$ brew install peco
~/.zshrc
に以下の設定を追記した後、
alias awsp=aws_profile_update
function aws_profile_update() {
PROFILES=$(aws configure list-profiles)
PROFILES_ARRAY=($(echo $PROFILES))
SELECTED_PROFILE=$(echo $PROFILES | peco)
[[ -n ${PROFILES_ARRAY[(re)${SELECTED_PROFILE}]} ]] && export AWS_PROFILE=${SELECTED_PROFILE}; echo 'Updated profile' || echo ''
}
~/.zshrc
を読み込めば、設定完了です。
$ source ~/.zshrc
以下の通り、コマンドを実行すると
$ awsp
動画のように~/.aws/config
の中からAWS Profileを選択、切り替えできます。
3. 余談
動画とpromptの表示が違うと思った方がいらっしゃるかもしれません。
私はspaceshipを以下の通り、カスタマイズしています。
SPACESHIP_TIME_SHOW=true
SPACESHIP_KUBECONTEXT_SHOW=false
SPACESHIP_DIR_PREFIX=' '
SPACESHIP_AWS_PREFIX=' '
SPACESHIP_EXEC_TIME_PREFIX=''
spaceshipは~/.zshrc
に環境変数を追加するだけで容易に項目の追加/削除やprefixの変更等ができます。
詳細はspaceshipのOptionsをご確認ください。