ハンズオン(簡易版): CFnテンプレート入門(IAM::AccessKey)

4. CloudFormationスタックの情報取得 (Outputs: handson-cli-cfn-iam-AccessKey-stack)

手順の目的

CloudFormationスタック"handson-cli-cfn-iam-AccessKey-stack"を作成します。

設定値の指定

手順に必要な設定値を変数に格納をします。

0. リージョン

リージョンを指定します。

環境変数の設定:

export AWS_DEFAULT_REGION='ap-northeast-1'

1. CloudFormationスタック名

CloudFormationスタック名を指定します。

変数の設定:

CLOUDFORMATION_STACK_NAME='handson-cli-cfn-iam-AccessKey-stack'

2. 出力ファイル用ディレクトリ

出力ファイル用ディレクトリを指定します。

変数の設定:

DIR_OUTPUT="${HOME}/environment/tmp-handson-cli-cfn-iam-AccessKey"

ディレクトリが存在することを確認し、存在しない場合は作成します。

コマンド:

ls -d ${DIR_OUTPUT} > /dev/null 2>&1 \
  || mkdir -p ${DIR_OUTPUT}

結果(例):

(出力なし)

3. 出力ファイル名

出力ファイル用名を指定します。

変数の設定:

FILENAME_OUTPUT='handson-cli-cfn-iam-AccessKey.ini'

変数の設定:

FILE_OUTPUT="${DIR_OUTPUT}/${FILENAME_OUTPUT}" \
  && echo ${FILE_OUTPUT}

結果(例):

${HOME}/environment/tmp-handson-cli-cfn-iam-AccessKey/handson-cli-cfn-iam-AccessKey.ini

設定値の確認

各変数に正しい設定値が格納されていることを確認します。

変数の確認:

cat << END

  # 0. AWS_DEFAULT_REGION:"ap-northeast-1"
       AWS_DEFAULT_REGION="${AWS_DEFAULT_REGION}"

  # 1. CLOUDFORMATION_STACK_NAME:"handson-cli-cfn-iam-AccessKey-stack"
       CLOUDFORMATION_STACK_NAME="${CLOUDFORMATION_STACK_NAME}"
  # 2. DIR_OUTPUT:"${HOME}/environment/tmp-handson-cli-cfn-iam-AccessKey"
       DIR_OUTPUT="${DIR_OUTPUT}"
  # 3. FILE_OUTPUT:"${HOME}/environment/tmp-handson-cli-cfn-iam-AccessKey/handson-cli-cfn-iam-AccessKey.ini"
       FILE_OUTPUT="${FILE_OUTPUT}"

END

各変数について、上の行と下の行の値の内容もしくは形式が同じであることを確認します。 もし異なる場合は、それぞれの手順番号に戻って変数の設定を行います。

処理の実行

CloudFormationスタックの情報を取得して、認証ファイルを作成します。

コマンド:

AWS_PROFILE_NAME=$( \
  aws cloudformation describe-stacks \
    --stack-name ${CLOUDFORMATION_STACK_NAME} \
    --query "Stacks[].Outputs[?OutputKey == \`OutputAccessKey0UserName\`].OutputValue" \
    --output text \
)

AWS_ACCESS_KEY_ID=$( \
  aws cloudformation describe-stacks \
    --stack-name ${CLOUDFORMATION_STACK_NAME} \
    --query "Stacks[].Outputs[?OutputKey == \`OutputAccessKey0AccessKey\`].OutputValue" \
    --output text \
)

AWS_SECRET_ACCESS_KEY=$( \
  aws cloudformation describe-stacks \
    --stack-name ${CLOUDFORMATION_STACK_NAME} \
    --query "Stacks[].Outputs[?OutputKey == \`OutputAccessKey0SecretKey\`].OutputValue" \
    --output text \
)

cat << EOF > ${FILE_OUTPUT}
[${AWS_PROFILE_NAME}]
aws_access_key_id=${AWS_ACCESS_KEY_ID}
aws_secret_access_key=${AWS_SECRET_ACCESS_KEY}
EOF

cat ${FILE_OUTPUT}

結果(例):

[handson-cli-cfn-iam-AccessKey-stack-User0-M94IU8HYANFG]
aws_access_key_id=AKIAXXXXXXXXXXXXXXXX
aws_secret_access_key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

完了確認

本手順の主処理は、以下の完了条件を満たしたときに成功したものとします。

完了条件1: アウトプットファイル"${HOME}/environment/tmp-handson-cli-cfn-iam-AccessKey/handson-cli-cfn-iam-AccessKey.ini"が存在する。

「アウトプットファイル"${HOME}/environment/tmp-handson-cli-cfn-iam-AccessKey/handson-cli-cfn-iam-AccessKey.ini"が存在する。」ことを確認します。

コマンド:

ls ${FILE_OUTPUT}

結果(例):

${HOME}/environment/tmp-handson-cli-cfn-iam-AccessKey/handson-cli-cfn-iam-AccessKey.ini

手順の完了