この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
はじめに
CX事業本部の吉川です。
AWS CLIでAssume Roleするのが手間が多く辛かったので、私もスクリプトを作ってみました。
先輩方の上の記事を参考にさせて頂きました。
MFA必須の設定がされている前提になります。
シェルスクリプト
#!/bin/bash
SERIAL_NUMBER='arn:aws:iam::MY_AWS_ACCOUNT_ID:mfa/MY_USER'
SOURCE_PROFILE='MY_SOURCE_PROFILE'
DATE=`date +%s`
echo 'Profile?'
read PROFILE
echo 'MFA Code?'
read TOKEN_CODE
ROLE_ARN=`aws configure get role_arn --profile $PROFILE`
OUTPUT=`aws sts assume-role \
--role-arn ${ROLE_ARN} \
--serial-number ${SERIAL_NUMBER} \
--role-session-name ${DATE}-session \
--profile ${SOURCE_PROFILE} \
--duration-second 3600 \
--token-code ${TOKEN_CODE}
`
export AWS_DEFAULT_REGION='ap-northeast-1'
export AWS_ACCESS_KEY_ID=`echo $OUTPUT | jq -r .Credentials.AccessKeyId`
export AWS_SECRET_ACCESS_KEY=`echo $OUTPUT | jq -r .Credentials.SecretAccessKey`
export AWS_SESSION_TOKEN=`echo $OUTPUT | jq -r .Credentials.SessionToken`
今回はAWS CLI以外に依存がないことを目指しました。
コピペするだけで使えます。
使い方
~/.aws/config
が下の記述だったとします。
[profile MY_SOURCE_PROFILE]
region = ap-northeast-1
output = json
[profile TARGET_PROFILE]
role_arn = arn:aws:iam::TARGET_AWS_ACCOUNT_ID:role/TARGET_ROLE
source_profile = MY_SOURCE_PROFILE
MY_SOURCE_PROFILEにログインして、TARGET_PROFILEへAssume Roleしたいという想定です。
. ./assume-role.sh # スクリプト実行
Profile?
TARGET_PROFILE # Assume RoleしたいProfile名を入力
MFA Code?
xxxxxx # ワンタイムパスワードを入力
以上でAssume Roleができます。