最近シェルを書くのが楽しいjustInCaseの@hirogaです。
AWSのプロファイル切り替えで事故ることが多かったので、確実に切り替えるためのスクリプトを書きました! ウチではこうしている、などご意見大歓迎です。
TL;DR
~/.aws/config
と ~/.aws/credentials
をリンク化します。
コード
#!/bin/bash
# asu (AWS Switch User)
set -e
user=$1
ln -f ~/.aws/${user}.config ~/.aws/config
ln -f ~/.aws/${user}.credentials ~/.aws/credentials
export -n AWS_ACCESS_KEY_ID
export -n AWS_SECRET_ACCESS_KEY
export -n AWS_SESSION_TOKEN
export -n AWS_DEFAULT_PROFILE
export -n AWS_DEFAULT_REGION
export -n AWS_DEFAULT_OUTPUT
export -n AWS_SHARED_CREDENTIALS_FILE
export -n AWS_CONFIG_FILE
aws configure list
こんな感じで使います。
asu develop-user
解説
複数のAWSプロファイルを切り替えて使うなら、コマンドの末尾に --profile USERNAME
とするのが最も確実だと思います。
でも、チームメンバーが共用で利用しているスクリプトが AWS_DEFAULT_PROFILE
依存だったら困りますよね? ※1
他にも、プロファイルを環境変数から設定するパターンもあります。(CircleCIでのデプロイをローカル実行するケースなど...)
そんなケースに対応するべく作りました。
※1 本来は~/.aws/config
内に記述するプロファイル名をチームで揃える、などの運用が正しいかもしれませんね。ご意見募集です!
細かいこだわりポイント
-
${user}.config
かconfig.${user}
で迷いましたが、拡張子が違うとアイコンが変わって紛らわしいので前者にしました。 - ハードリンクかシンボリックリンクかで迷いましたが、対象のプロファイルがないときにはリンクでコケて欲しかった + config/credentialsだけDockerでvolumeするケースを想定してハードリンクにしました。
- そのほかの環境変数は事故の元なので全部消しました。