AWS CLIを利用して、GetSessionTokenを利用します。
#前提条件
##S3、STSへの権限
- S3、STSに対してフル権限があること。
##AWS CLIのバージョン
以下のバージョンで動作確認済
- AWS CLI 1.7.39
aws --version
aws-cli/1.7.39 Python/2.7.6 Darwin/14.4.0
#0. 準備
##0.1. リージョンの指定
リージョンを指定しておきます。
export AWS_DEFAULT_REGION=ap-northeast-1
##0.2. 変数の確認
プロファイルが想定のものになっていることを確認します。
aws configure list
Name Value Type Location
---- ----- ---- --------
profile iamFull manual --profile
access_key ****************IK5Q shared-credentials-file
secret_key ****************nA0/ shared-credentials-file
region ap-northeast-1 env AWS_DEFAULT_REGION
##0.3. 作業用ディレクトリの確認
カレントディレクトリにファイルを出力する為、作業用のディレクトリをご用意ください。
pwd
ls -l
#1. SessionToken利用
##1.1. SessionTokenの取得
Tokenの有効期限を15分(60*15)に設定します。
EXPIRATION_SECONDS=`expr 60 \* 15` \
&& echo ${EXPIRATION_SECONDS}
##1.2. SessionTokenの取得
保存用ファイル名を指定します。
FILE_SESSION_TOKEN_OUTPUT=session_token_output.json
SessionTokenを取得します。
cat << ETX
EXPIRATION_SECONDS: ${EXPIRATION_SECONDS}
FILE_SESSION_TOKEN_OUTPUT: ${FILE_SESSION_TOKEN_OUTPUT}
ETX
aws sts get-session-token \
--duration-seconds ${EXPIRATION_SECONDS} \
> ${FILE_SESSION_TOKEN_OUTPUT} \
&& cat ${FILE_SESSION_TOKEN_OUTPUT}
{
"Credentials": {
"SecretAccessKey": "c53hZ5iIaCfFUkgVlC58jS8xLPpm0Ys8gHj923Al",
"SessionToken": "AQoDYXdzEEQa8AHEsVcD/T/4sTZLGcZyEwxELTcHh1pvq5nzTIz+Xx1NgBtcIHmk57K5xyNp1EIFaQwMgElzygEgnEsp6A+3T2gO204VXG16wOlF84t/8maBv6xNBrShkyCySbUr9iOsB77zL5+9XFvQvCPuXh+nomqyHjKdu3QYWBKH4qzyAEcqkub9vAd3NGpvP2CfHGstSpAiCFDDlCoQ0hp0zQi82vdr06mT5ELvZjbopWIgC88P4OAC41JRavpnv86hLILcqfx38LNiFELfUX+17YwavXpHRow31Jd97rFJpP0vl1SDfY0t67DdQXsTlOpUxFqQh10gi9SorQU=",
"Expiration": "2015-07-18T13:27:23Z",
"AccessKeyId": "ASIAJYC24GWEJ4HK3BLA"
}
}
##1.3. プロファイルの作成
取得したSessionToken出力を利用してプロファイルを作成します。
PROFILE_NAME=session-token
FILE_PROFILE_CONFIG=${PROFILE_NAME}.config \
&& echo ${FILE_PROFILE_CONFIG}
echo "[profile ${PROFILE_NAME}]" > ${FILE_PROFILE_CONFIG}
cat ${FILE_SESSION_TOKEN_OUTPUT} | awk '
$1 == "\"AccessKeyId\":" {
gsub(/\"/,""); gsub(/,/,""); print "aws_access_key_id = "$2
}
$1 == "\"SecretAccessKey\":" {
gsub(/\"/,""); gsub(/,/,""); print "aws_secret_access_key = "$2
}
$1 == "\"SessionToken\":" {
gsub(/\"/,""); gsub(/,/,""); print "aws_session_token = "$2
}
' >> ${FILE_PROFILE_CONFIG} \
&& cat ${FILE_PROFILE_CONFIG}
#2. SessionTokenの利用
作成したプロファイルを環境変数に指定します。
export AWS_DEFAULT_PROFILE=${PROFILE_NAME}
export AWS_CONFIG_FILE=${FILE_PROFILE_CONFIG}
SessionTokenから作成したプロファイルに変更されていることを確認します。
aws configure list
Name Value Type Location
---- ----- ---- --------
profile session-token manual --profile
access_key ****************3BLA config-file
secret_key ****************23Al config-file
region ap-northeast-1 env AWS_DEFAULT_REGION
SessionTokenを取得したIAM権限と同等の権限を有していることを確認します。
aws s3 ls
#2. SessionTokenの無効化確認
有効期間を過ぎた後、このプロファイルが利用できなくなることを確認します。
明示的に削除する手順は存在しません。
#完了