AWS CLIのプロファイルを簡単切り替え

AWSのプロファイルをCLI上のコマンドで簡単に切り替えられるようにしました。
2021.05.16

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

AWSのアカウントを複数使用している場合など、プロファイルを切り変えることがあるかと思います。

コマンド実行時に指定したり、

$ aws s3 ls --profile test

環境変数に指定して切り替えが可能です。

$ export AWS_DEFAULT_PROFILE=test

今回、コマンドから簡単にプロファイル切り替えられるようにしてみました。
awspというnpmのライブラリをフォークして実装しています。

コマンドを使用可能にする

こちらから、必要なソースをcloneします。

$ git clone https://github.com/itouuuuuuuuu/awsp.git

cloneした awspディレクトリ内でパッケージをインストールします。

$ cd awsp
$ npm i

最後に、.zshrcに下記を追記します。
~/awsp/run.sh の部分は、 awspディレクトリを配置しているパスを適宜指定してください。

alias awsp="source ~/awsp/run.sh"

シェルを再起動して、準備完了です!

プロファイルを切り替えてみる

awsp コマンドを実行するだけで切り替え可能です。
現在のプロファイル一覧が表示されるので、選択してください。

$ awsp
AWS Profile Switcher
? Choose a profile 
❯ test 
  default

プロファイルが切り替わっていることが確認できるかと思います。

$ echo $AWS_DEFAULT_PROFILE
test

また、引数としてプロファイル名を与えることでの切り替えも可能です。

$ awsp test

こちらの記事のロールの一時クレデンシャルをコマンドから設定する方法と組み合わせれば、「プロファイルの切り替え -> 一時クレデンシャルの環境変数設定」が結構楽に操作できるかと思います。

課題

npm installで 本家のawsp をインストールしてコマンドを実行すると、 [プロセスが完了しました] と表示され何も操作できなくなります。

npmパッケージとしてインストールせずにローカルで使用すると問題なく動作します。
source _awsp で現在のシェルで実行している箇所とnpmのパッケージの兼ね合い?かと思うのですが、もし解決方法わかる方はアドバイスいただければ幸いです。
パッケージからインストールしたい。。