LoginSignup
0
0

More than 5 years have passed since last update.

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

Posted at

最近シェルを書くのが楽しい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するケースを想定してハードリンクにしました。
  • そのほかの環境変数は事故の元なので全部消しました。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0