Galapagos Tech Blog

株式会社ガラパゴスのメンバーによる技術ブログです。

aws-vault を使ってマルチアカウント環境でも快適にコンソール画面へログイン

お疲れ様です、TECH石浪です。

みなさんAWSはマルチアカウントにしていますか?

株式会社ガラパゴスも僕がJOINした頃と比べると社員数が3倍を超え、入社当時は1アカウントで開発本番両方をVPCで区切って扱っていましたが、今ではプロダクト毎+本番/開発と各環境ごとにAWS アカウントを用意する正気な開発になりました。

さて、そうなるとAWSアカウントの切り替えどうやろうってなりますよね、自分はずっとBASTIONユーザーからスイッチロールするJumpアカウントの手法を使っていました。

参考記事: マルチアカウントな AWS環境のマネジメントコンソールへのアクセス方法をまとめてみた | DevelopersIO

しかしこの切り替え、環境が増えるとちょっと、いやかなり面倒なんですよね。 そこでaws-vaultを使ってみたところ、めっちゃよかったので紹介したいと思います。

なお aws-vault は99design さんがメンテナンスしているプロジェクトなのでAWS非公式です。

github.com

また余談ですが99designさんはロゴなどのデザインをクラウドワークとして発注できるサイトです。

99designs.jp

日本だとランサーズさんクラウドワークスさんが大手ですね、ただデザインに関してだけでいうと99designさんマジで世界トップクラスのデザインが返ってくるので僕もロゴを発注することがあったらここに依頼しようって思っています。

aws-vaultのメリット

閑話休題 aws-vaultですが

メリットは以下の通り

  1. ターミナルから直接、指定した環境の画面が開ける
  2. Chromeを設定することで複数環境を同時にブラウザ開ける(いままでは Firefox拡張機能でやってました!)
  3. ファイルパーミッション400 とはいえ ~/.aws/credentials に平文で保存されていた情報をOSのセキュア キーストアに移行できる

参考記事:https://99designs.com.au/blog/engineering/aws-vault/

2の複数環境を同時に同じブラウザ開けるめっちゃ良くないですか?

もう一度サインインしてください

もう、このダイアログとはおさらばですよ。

3もめっちゃ熱いですよね、MacだとKeychainに保存してくれており、aws-valutを経由して CLIを叩くとキーチェーンのパスワード入力を求められます、aws-valutのためだけに新しいパスワードを覚える必要とか無し!!!

キーチェーンのパスワードを入力してください

ターミナルから指定した環境のコンソール画面を開く

さて、1についてですが aws-valut には aws-vault login という機能がありまして

aws-vault login profile名 で当該環境のコンソールを一発で開くことができます。

ただ、

aws-vault login stg で画面開いて

aws-vault login prd でもう一枚たてると

別のAWSアカウントのログインするには、まずログアウトする必要があります

こうなるわけですね。

そこで Chromeのシークレットモードを立ち上げる --incognito オプションを使って環境毎にブラウザを立てれるようにします。

具体的には .zshrc に以下の行を追加します(※自分はめんどくさがり屋なので 更にaws-valutを awsvに置き換えています)

alias awsvlogin='(){ open -na "Google Chrome" --args --incognito --user-data-dir=$HOME/Library/Application\ Support/Google/Chrome/aws-vault/$@ $(aws-vault login $@ --stdout) }'
alias awsv='aws-vault'

これにより awsvlogin profile名 だけで指定した環境のコンソール画面が立ち上がります。

~/glpgs ❯ awsvlogin planner-stg                                                                                                                                                

~/glpgs ❯ awsvlogin planner-prd

Chromeの画面上でAWSアカウント競合しないで起動しています

2つの環境を同時にChromeで開くことができるようになりました!

Chrome側のprofile を環境数分作って aliasに --profile-directory="Profile 1" "Profile 2"…と 設定していくとバーの色もかえれて、複数立ち上げても一目でどの環境かわかるぞ

ステータスバーの色で環境を判別する

みたいなこともできるんですが、環境ごとにそれを設定していると結局数が多くて面倒になってしまい自分はシークレットモードで使っちゃってます。

ここまで読んでくだりありがとうございました! みなさまも良いAWSライフをお過ごしください!!!


最後に

ガラパゴスでは一緒に働く仲間を募集しています!

僕のインタビュー記事も貼っておくので良ければ読んでみてください!

note.com

ご興味のある方はぜひご応募いただけますと嬉しいです。