Defaultのプロファイル依存のコマンドがあっても確実にAWSプロファイルを切り替える

Defaultのプロファイル依存のコマンドがあっても確実にAWSプロファイルを切り替える:

最近シェルを書くのが楽しい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}.configconfig.${user} で迷いましたが、拡張子が違うとアイコンが変わって紛らわしいので前者にしました。
  • ハードリンクかシンボリックリンクかで迷いましたが、対象のプロファイルがないときにはリンクでコケて欲しかった + config/credentialsだけDockerでvolumeするケースを想定してハードリンクにしました。
  • そのほかの環境変数は事故の元なので全部消しました。

コメント

このブログの人気の投稿

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2021-04-30 23:37:32 RSSフィード2021-04-30 23:00 分まとめ(42件)

投稿時間:2023-02-05 02:09:04 RSSフィード2023-02-05 02:00 分まとめ(9件)