はじめに
AWS CLIを使用してIAMロールを引き受ける方法は、公式ドキュメントの通り1ですが、コマンド結果から都度コピペで AWS_ACCESS_KEY_ID
などの環境変数を設定するのは手間です。
本記事では、得られたjsonをjqでパースし、環境変数を設定する方法を説明します。
必要なもの
- awscli
- jq
AWS CloudShell には両方入っているので、とりあえず試すにはおすすめです。
おことわり
~/.aws/config
を使うことでより簡単に設定できます2が、一時的な対応とかで必要になるケースがあり、本記事を作成しました。
手順
以下のbashスクリプトのとおりです。
ROLE_ARN
と SESSION_NAME
を設定し実行するだけです。
# def var
ROLE_ARN=arn:aws:iam::${ACCOUNT_ID}:role/${ROLE_NAME}
SESSION_NAME=some-session
# command
eval $(
aws sts assume-role --role-arn $ROLE_ARN --role-session-name $SESSION_NAME \
| jq -r '[
"export AWS_ACCESS_KEY_ID=" + (.Credentials.AccessKeyId|tostring),
"export AWS_SECRET_ACCESS_KEY=" + (.Credentials.SecretAccessKey|tostring),
"export AWS_SESSION_TOKEN=" + (.Credentials.SessionToken|tostring)
]
| join(";")
'
)
正しく設定できているかは aws sts get-caller-identity
で確認してください。