⚙️

会社と個人のAWSアカウントを切り替えて使う

2 min read

これは何?

1つのPCで複数のAWSアカウントを切り替えて使うためのtips。

何ができるようになる?

  • コマンド一発で複数アカウントを切り替えることができるようになる
  • 今どちらのアカウントで操作しているか分かるようになる

IAMユーザの作成とaws cliのprofile設定までできている場合は
切り替えを楽にする設定から読まれるとスムーズです。

個人アカウントの方でアカウント作成

IAMから「ユーザ」=>「ユーザの追加」

既存のポリシーを直接アタッチからAdministratorAccessを選択。

個人用なので強い権限にしていますが、きちんと運用する場合は権限を絞りましょう。

確認画面

ここに出てくる下記を控える。

  • パスワード
  • アクセスキーID
  • シークレットアクセスキー

aws cliにprofileを設定する

ターミナルに戻り、aws cliに設定を追加する。

aws configure --profile network-test

さきほど控えたアクセスキーIDシークレットアクセスキーを入力する。
残りの設定はお好みだが、私は下記のようにしました。

Default region name [None]: ap-northeast-1
Default output format [None]: json

設定自体は完了。

この状態でコマンドごとにprofileを指定するか環境変数を切り替えれば使える。

aws s3 ls --profile network-test
export AWS_DEFAULT_PROFILE=network-test
aws s3 ls

ただ面倒なので切り替えを楽にする設定を追加していく。

切り替えを楽にする設定

AWSP - AWS Profile Switcherを使う。

npm install -g awsp

~/.zshrcに下記を追記する。

~/.zshrc
function awsp() {
  if [ $# -ge 1 ]; then
    export AWS_PROFILE="$1"
    echo "Set AWS_PROFILE=$AWS_PROFILE."
  else
    source _awsp
  fi
  if [ "$AWS_PROFILE" != "" ]; then
    export AWS_DEFAULT_PROFILE=$AWS_PROFILE
  else
    unset AWS_DEFAULT_PROFILE
  fi
}

設定反映すると、切り替えられるようになる。

# 設定を読み込み
source ~/.zshrc
# awspで切り替えられるようになる。
$ awsp
AWS Profile Switcher
? Choose a profile 
❯ network-test 
  default 

ターミナル上でどのアカウントで操作しているか分かるようにする

プロンプトを下記のように修正し、今操作するprofileがどれなのか表示する。
.zshrcに下記を追加して

~/.zshrc
PS1='[%c |$(echo $AWS_PROFILE)]\$ '
# 設定を読み込み
source ~/.zshrc
[~ |]$ awsp
AWS Profile Switcher
? Choose a profile network-test
[~ |network-test]$