設定値の指定
設定値の指定
手順に必要な設定値を変数に格納をします。
0. リージョンの指定
リージョンを指定します。
環境変数の設定:
export AWS_DEFAULT_REGION='ap-northeast-1'
1. CloudFormationスタック名
CloudFormationスタック名を指定します。
変数の設定:
CLOUDFORMATION_STACK_NAME='handson-cli-vpc-simple-stack'
2. テンプレートファイル名
CloudFormationテンプレート用ディレクトリを指定します。
変数の設定:
DIR_CLOUDFORMATION_TEMPLATE="${HOME}/environment/conf-handson-cli-ssm-session-manager"
CloudFormationテンプレート名を指定します。
変数の設定:
CLOUDFORMATION_TEMPLATE_NAME='handson-cli-vpc-simple'
変数の設定:
FILE_CLOUDFORMATION_TEMPLATE="${DIR_CLOUDFORMATION_TEMPLATE}/${CLOUDFORMATION_TEMPLATE_NAME}.template" \
&& echo ${FILE_CLOUDFORMATION_TEMPLATE}
結果(例):
${HOME}/environment/conf-handson-cli-ssm-session-manager/handson-cli-vpc-simple.template
設定値の確認
各変数に正しい設定値が格納されていることを確認しながら保存します。
変数の確認:
cat << END
# 0. AWS_DEFAULT_REGION:"ap-northeast-1"
AWS_DEFAULT_REGION="${AWS_DEFAULT_REGION}"
# 1. CLOUDFORMATION_STACK_NAME:"handson-cli-vpc-simple-stack"
CLOUDFORMATION_STACK_NAME="${CLOUDFORMATION_STACK_NAME}"
# 2. FILE_CLOUDFORMATION_TEMPLATE:"${HOME}/environment/conf-handson-cli-ssm-session-manager/handson-cli-vpc-simple.template"
FILE_CLOUDFORMATION_TEMPLATE="${FILE_CLOUDFORMATION_TEMPLATE}"
END
下段の変数が入っていない、もしくは上段と同等の値が入っていない場合は、それぞれの手順番号に戻って変数の設定を行います。
処理の実行
CloudFormationスタックを作成します。
変数の確認:
cat << ETX
# CLOUDFORMATION_STACK_NAME:"handson-cli-vpc-simple-stack"
CLOUDFORMATION_STACK_NAME="${CLOUDFORMATION_STACK_NAME}"
# FILE_CLOUDFORMATION_TEMPLATE:"${HOME}/environment/conf-handson-cli-ssm-session-manager/handson-cli-vpc-simple.template"
FILE_CLOUDFORMATION_TEMPLATE="${FILE_CLOUDFORMATION_TEMPLATE}"
ETX
コマンド:
aws cloudformation create-stack \
--stack-name ${CLOUDFORMATION_STACK_NAME} \
--template-body file://${FILE_CLOUDFORMATION_TEMPLATE}
結果(例):
{
"StackId": "arn:aws:cloudformation:ap-northeast-1:XXXXXXXXXXXX:stack/handson-cli-vpc-simple-stack/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
完了確認
「CloudFormationスタック"handson-cli-vpc-simple-stack"が存在する。」ことを確認します。
コマンド:
aws cloudformation list-stacks \
--query "StackSummaries[? \
StackName == \`${CLOUDFORMATION_STACK_NAME}\` \
&& StackStatus != \`DELETE_COMPLETE\` \
].StackName" \
--output text
結果(例):
handson-cli-vpc-simple-stack
スタックIDを取得します。
コマンド:
CLOUDFORMATION_STACK_ID=$( \
aws cloudformation list-stacks \
--query "StackSummaries[? \
StackName == \`${CLOUDFORMATION_STACK_NAME}\` \
&& StackStatus != \`DELETE_COMPLETE\` \
].StackId" \
--output text \
) \
&& echo ${CLOUDFORMATION_STACK_ID}
結果(例):
arn:aws:cloudformation:ap-northeast-1:XXXXXXXXXXXX:stack/handson-cli-vpc-simple-stack/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
「CloudFormationスタック"handson-cli-vpc-simple-stack"のステータスが"CREATE_COMPLETE"になっている。」ことを確認します。
コマンド:
CLOUDFORMATION_STACK_STATUS=$(\
aws cloudformation list-stacks \
--query "StackSummaries[? \
StackName == \`${CLOUDFORMATION_STACK_NAME}\` \
&& StackStatus != \`DELETE_COMPLETE\` \
].StackStatus" \
--output text \
) \
&& echo ${CLOUDFORMATION_STACK_STATUS}
結果(例):
注釈
ステータスがROLLBUCKになった場合は、イベントを確認して原因を特定します。
コマンド:
aws cloudformation describe-stack-events \
--stack-name ${CLOUDFORMATION_STACK_NAME}
結果(例):