先輩方に感謝しながらAssume Roleスクリプト書いてみました
はじめに
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ができます。