13
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ZshでAWS Profileの可視化と切り替えの容易化

Posted at

本投稿では

Zshを用いてAWS Profileの可視化と切り替えを容易にする方法を説明します。
設定すると以下のようにAWS Profileを可視化・切り替えできるようになります。

複数のAWSルートアカウント/リージョン上にリソースを作成する必要がある方の参考になれば幸いです。
また、もっと良い方法をご存知の方、ぜひ教えてください。よろしくお願いします。

awsp-example.gif

前提

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に表示されます。
スクリーンショット 2020-07-10 16.20.18.png

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をご確認ください。

13
5
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
13
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?