[JAWS-UG CLI] STS:#1 GetSessionToken

AWS CLIを利用して、GetSessionTokenを利用します。

#前提条件
##S3、STSへの権限
* S3、STSに対してフル権限があること。

##AWS CLIのバージョン
以下のバージョンで動作確認済

* AWS CLI 1.7.39

```bash:コマンド
aws --version
```

```bash:結果(例)
aws-cli/1.7.39 Python/2.7.6 Darwin/14.4.0
```

#0. 準備
##0.1. リージョンの指定
リージョンを指定しておきます。

```bash:コマンド
export AWS_DEFAULT_REGION=ap-northeast-1
```

##0.2. 変数の確認
プロファイルが想定のものになっていることを確認します。

```bash:コマンド
aws configure list
```

```bash:結果(例)
      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. 作業用ディレクトリの確認
カレントディレクトリにファイルを出力する為、作業用のディレクトリをご用意ください。

```bash:コマンド
pwd
ls -l
```

#1. SessionToken利用
##1.1. SessionTokenの取得
Tokenの有効期限を15分(60*15)に設定します。

```bash:変数の設定
EXPIRATION_SECONDS=`expr 60 \* 15` \
  && echo ${EXPIRATION_SECONDS}
```

##1.2. SessionTokenの取得
保存用ファイル名を指定します。

```bash:変数の設定
FILE_SESSION_TOKEN_OUTPUT=session_token_output.json
```

SessionTokenを取得します。

```bash:変数の確認
cat << ETX

        EXPIRATION_SECONDS: ${EXPIRATION_SECONDS}
        FILE_SESSION_TOKEN_OUTPUT: ${FILE_SESSION_TOKEN_OUTPUT}

ETX
```

```bash:コマンド
aws sts get-session-token \
  --duration-seconds ${EXPIRATION_SECONDS} \
  > ${FILE_SESSION_TOKEN_OUTPUT} \
  && cat ${FILE_SESSION_TOKEN_OUTPUT}
```

```bash:結果(例)
{
    "Credentials": {
        "SecretAccessKey": "c53hZ5iIaCfFUkgVlC58jS8xLPpm0Ys8gHj923Al", 
        "SessionToken": "AQoDYXdzEEQa8AHEsVcD/T/4sTZLGcZyEwxELTcHh1pvq5nzTIz+Xx1NgBtcIHmk57K5xyNp1EIFaQwMgElzygEgnEsp6A+3T2gO204VXG16wOlF84t/8maBv6xNBrShkyCySbUr9iOsB77zL5+9XFvQvCPuXh+nomqyHjKdu3QYWBKH4qzyAEcqkub9vAd3NGpvP2CfHGstSpAiCFDDlCoQ0hp0zQi82vdr06mT5ELvZjbopWIgC88P4OAC41JRavpnv86hLILcqfx38LNiFELfUX+17YwavXpHRow31Jd97rFJpP0vl1SDfY0t67DdQXsTlOpUxFqQh10gi9SorQU=", 
        "Expiration": "2015-07-18T13:27:23Z", 
        "AccessKeyId": "ASIAJYC24GWEJ4HK3BLA"
    }
}
```

##1.3. プロファイルの作成
取得したSessionToken出力を利用してプロファイルを作成します。

```bash:変数の設定
PROFILE_NAME=session-token
FILE_PROFILE_CONFIG=${PROFILE_NAME}.config \
  && echo ${FILE_PROFILE_CONFIG}
```

```bash:コマンド
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の利用
作成したプロファイルを環境変数に指定します。

```bash:環境変数指定
export AWS_DEFAULT_PROFILE=${PROFILE_NAME}
export AWS_CONFIG_FILE=${FILE_PROFILE_CONFIG}
```

SessionTokenから作成したプロファイルに変更されていることを確認します。

```bash:コマンド
aws configure list
```

```bash:結果(例)
      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権限と同等の権限を有していることを確認します。

```bash:コマンド(例)
aws s3 ls
```

#2. SessionTokenの無効化確認
有効期間を過ぎた後、このプロファイルが利用できなくなることを確認します。
明示的に削除する手順は存在しません。

#完了