お疲れ様です、TECH石浪です。
みなさんAWSはマルチアカウントにしていますか?
株式会社ガラパゴスも僕がJOINした頃と比べると社員数が3倍を超え、入社当時は1アカウントで開発本番両方をVPCで区切って扱っていましたが、今ではプロダクト毎+本番/開発と各環境ごとにAWS アカウントを用意する正気な開発になりました。
さて、そうなるとAWSアカウントの切り替えどうやろうってなりますよね、自分はずっとBASTIONユーザーからスイッチロールするJumpアカウントの手法を使っていました。
参考記事: マルチアカウントな AWS環境のマネジメントコンソールへのアクセス方法をまとめてみた | DevelopersIO
しかしこの切り替え、環境が増えるとちょっと、いやかなり面倒なんですよね。 そこでaws-vaultを使ってみたところ、めっちゃよかったので紹介したいと思います。
なお aws-vault は99design さんがメンテナンスしているプロジェクトなのでAWS非公式です。
また余談ですが99designさんはロゴなどのデザインをクラウドワークとして発注できるサイトです。
日本だとランサーズさんやクラウドワークスさんが大手ですね、ただデザインに関してだけでいうと99designさんマジで世界トップクラスのデザインが返ってくるので僕もロゴを発注することがあったらここに依頼しようって思っています。
aws-vaultのメリット
メリットは以下の通り
- ターミナルから直接、指定した環境の画面が開ける
- Chromeを設定することで複数環境を同時にブラウザ開ける(いままでは Firefoxの拡張機能でやってました!)
- ファイルパーミッション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
でもう一枚たてると
こうなるわけですね。
そこで 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
2つの環境を同時にChromeで開くことができるようになりました!
Chrome側のprofile を環境数分作って aliasに --profile-directory="Profile 1"
"Profile 2"
…と 設定していくとバーの色もかえれて、複数立ち上げても一目でどの環境かわかるぞ
みたいなこともできるんですが、環境ごとにそれを設定していると結局数が多くて面倒になってしまい自分はシークレットモードで使っちゃってます。
ここまで読んでくだりありがとうございました! みなさまも良いAWSライフをお過ごしください!!!
最後に
ガラパゴスでは一緒に働く仲間を募集しています!
僕のインタビュー記事も貼っておくので良ければ読んでみてください!
ご興味のある方はぜひご応募いただけますと嬉しいです。