CLIでのスイッチロール

CLIでスイッチロールする方法のメモ。

  • アカウント111111111111から222222222222のhogehoge-roleロールにスイッチする
  • アカウント222222222222ではアカウント111111111111を信頼したhogehoge-roleロールが作成済み

コマンドでスイッチロール

現在のアイデンティティを確認。

aws sts get-caller-identity

assume-roleしてクレデンシャルを受け取る。

AWS_STS_CREDENTIALS=$(aws sts assume-role --role-arn "arn:aws:iam::222222222222:role/hogehoge-role" --role-session-name AWSCLI-Session)

クレデンシャルを環境変数に格納。

export AWS_ACCESS_KEY_ID=$(echo ${AWS_STS_CREDENTIALS} | jq -r '.Credentials.AccessKeyId')
export AWS_SECRET_ACCESS_KEY=$(echo ${AWS_STS_CREDENTIALS} | jq -r '.Credentials.SecretAccessKey')
export AWS_SESSION_TOKEN=$(echo ${AWS_STS_CREDENTIALS} | jq -r '.Credentials.SessionToken')

アイデンティティを確認。

aws sts get-caller-identity

元のユーザーに戻るときは環境変数をアンセットする。

unset AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY AWS_SESSION_TOKEN

プロファイルに設定する

.aws/configに以下のように書く。

[profile default]
region = ap-northeast-1
cli_pager =
[profile hogehoge-profile]
role_arn = arn:aws:iam::222222222222:role/hogehoge-role
source_profile = default

コマンド実行時にプロファイルを指定するか、環境変数をセットしてあげる。

export AWS_DEFAULT_PROFILE=hogehoge-profile

アイデンティティを確認。

aws sts get-caller-identity