Skip to content

Instantly share code, notes, and snippets.

@tomofuminijo
Created April 4, 2020 02:33
Show Gist options
  • Save tomofuminijo/8d80023689e17ef3992923809e6470da to your computer and use it in GitHub Desktop.
Save tomofuminijo/8d80023689e17ef3992923809e6470da to your computer and use it in GitHub Desktop.
A sample script that executes GetSessionToken and then AssumeRole
#!/bin/bash -eu
# Auth アカウントのIAM ユーザ アクセスキーにより、get-session-token を実行して、MFA 認証済みの一時的認証情報を入手する
credentials=$(aws sts get-session-token \
--serial-number arn:aws:iam::<auth_account_id>:mfa/<iam_username> \
--token-code $1 \
--query "Credentials.[AccessKeyId, SecretAccessKey,SessionToken]" \
--output text)
# 一旦環境変数にMFA 認証済み一時的認証情報をセット
export AWS_ACCESS_KEY_ID=$(echo $credentials | cut -d ' ' -f 1)
export AWS_SECRET_ACCESS_KEY=$(echo $credentials | cut -d ' ' -f 2)
export AWS_SESSION_TOKEN=$(echo $credentials | cut -d ' ' -f 3)
# 対象アカウントのIAM ロールをassume-role する
credentials=$(aws sts assume-role --role-arn arn:aws:iam::<target-accountid>:role/<role_name> \
--role-session-name <session_name(任意)> \
--query "Credentials.[AccessKeyId, SecretAccessKey,SessionToken]" \
--output text)
# 取得した対象アカウントの一時的認証情報をaws cli のdev プロファイルにセットする
access_key_id=$(echo $credentials | cut -d ' ' -f 1)
secret_access_key=$(echo $credentials | cut -d ' ' -f 2)
session_token=$(echo $credentials | cut -d ' ' -f 3)
aws configure set profile.dev.aws_access_key_id "$access_key_id"
aws configure set profile.dev.aws_secret_access_key "$secret_access_key"
aws configure set profile.dev.aws_session_token "$session_token"
# 環境変数削除
unset AWS_ACCESS_KEY_ID
unset AWS_SECRET_ACCESS_KEY
unset AWS_SESSION_TOKEN
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment