Assume RoleしていることをiTerm2上でアピールしてみた

2018.02.07

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

こんにちは、臼田です。

今回はコンソール上でAssume Roleしている事が分かりやすいようにiTerm2で環境名を表示してハイライトしてみました。

Assume Roleしているかわかりづらい

コンソール上でawscliを利用している時、どの環境で作業をしているかわからなくなる時があります。

え、--profileオプションを毎回付けている?それが利用できないときもあるじゃないですか、pythonのスクリプトを利用したりとか、profileに対応していない操作はたまにあります。

というわけで、Assume Roleをしている場合に表示してくれるようにしてみたいと思います。

何をソースとするのか

Assume Roleした後に設定する必要がある環境変数は下記の3つです。

  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY
  • AWS_SESSION_TOKEN

残念ながらすべて環境名と直接関係のある項目ではありません。

しかしながら、Assume Roleを行う際には--role-session-nameオプションで任意の名前を設定します。こちらを利用してみたいと思います。

設定方法

これは完全に個人の環境に依存しますが、私は下記を利用してAssume Roleします。

AssumeRoleを簡単にするスクリプトがもっと簡単になりました

みなさんも、Assume Roleを毎回手で行うなら、何かしらのスクリプトでラッパーしているかと思います。

なので、そこで--role-session-nameを保存する環境変数を用意して下さい。

上記のスクリプトでは$AWS_SETSTS_ROLE_SESSION_NAMEに保存されています。あとはこれをbashのプロンプトに表示するようにしましょう。

私の場合は下記のようになっています。

# .bashrc
PS1="\h:\W \u\`
if [ ! -z \"\$AWS_SETSTS_ROLE_SESSION_NAME\" ]; then
 echo \" [\$AWS_SETSTS_ROLE_SESSION_NAME] \";
fi
\`\$ "

これで、$AWS_SETSTS_ROLE_SESSION_NAMEが設定されている場合のみ、環境名がコンソール上で表示されます。

# 普段
ホスト名:~ usuda.keisuke$
# Assume Role時
ホスト名:~ usuda.keisuke [環境名] $

色も変えよう

さて、$PS1に一緒に色の変更を入れてもいいのですが、私は下記を参考にiTerm2でプロンプト自体を強調する設定を入れていました。

特定キーワードをハイライト表示してコマンド実行前に注意喚起する(iTerm2)

なので、iTerm2でやってみます。

# 通常のプロンプト
^\[.*\]\$ |ホスト名:.*\$ 
# 上記 + 環境名
 \[.*?\] \$

動作している時はこんな感じです。

若干正規表現が甘い気もしますが、目的は達成しているので良しとします←

まとめ

プロンプトでもiTerm2でもいいですが、色を変えて自分で誤操作を抑制する仕組みを導入するのは大事だと思います。

同じような環境の場合には、ぜひ一度試してみてはいかがでしょうか?