1. CloudFormationスタックの作成 (CAPABILITY_NAMED_IAM & URL指定: handson-cli-env-stack)¶
手順の目的¶
CloudFormationスタック"handson-cli-env-stack"を作成します。
リージョンの指定¶
CloudShell環境の場合¶
右上のリージョンメニューから"東京 "を選択します。
変数に正しい設定値が格納されていることを確認します。
変数の確認:
cat << END # AWS_REGION:"ap-northeast-1" AWS_REGION="${AWS_REGION}" END
上の行と下の行の値の内容もしくは形式が同じであることを確認します。 もし異なる場合は、選択をやりなおします。
EC2インスタンス環境の場合¶
AWS CLI v2の場合
リージョンを指定します。
環境変数の設定:
export AWS_REGION='ap-northeast-1'
変数に正しい設定値が格納されていることを確認します。
変数の確認:
cat << END # AWS_REGION:"ap-northeast-1" AWS_REGION="${AWS_REGION}" END
上の行と下の行の値の内容もしくは形式が同じであることを確認します。 もし異なる場合は、変数の設定をやりなおします。
AWS CLI v1の場合
リージョンを指定します。
環境変数の設定:
export AWS_DEFAULT_REGION='ap-northeast-1'
変数に正しい設定値が格納されていることを確認します。
変数の確認:
cat << END # AWS_DEFAULT_REGION:"ap-northeast-1" AWS_DEFAULT_REGION="${AWS_DEFAULT_REGION}" END
上の行と下の行の値の内容もしくは形式が同じであることを確認します。 もし異なる場合は、変数の設定をやりなおします。
設定値の指定¶
手順に必要な設定値を変数に格納をします。
1. CloudFormationスタック名¶
CloudFormationスタック名を指定します。
変数の設定:
CLOUDFORMATION_STACK_NAME='handson-cli-env-stack'
2. テンプレートURL¶
CloudFormationテンプレートのURLを指定します。
変数の設定:
CLOUDFORMATION_TEMPLATE_URL='https://materials-opscli.s3.ap-northeast-1.amazonaws.com/templates/handson-cli-env-cloudshell.template'
設定値の確認¶
各変数に正しい設定値が格納されていることを確認します。
変数の確認:
cat << END # 1. CLOUDFORMATION_STACK_NAME:"handson-cli-env-stack" CLOUDFORMATION_STACK_NAME="${CLOUDFORMATION_STACK_NAME}" # 2. CLOUDFORMATION_TEMPLATE_URL:"https://materials-opscli.s3.ap-northeast-1.amazonaws.com/templates/handson-cli-env-cloudshell.template" CLOUDFORMATION_TEMPLATE_URL="${CLOUDFORMATION_TEMPLATE_URL}" END
各変数について、上の行と下の行の値の内容もしくは形式が同じであることを確認します。 もし異なる場合は、それぞれの手順番号に戻って変数の設定を行います。
処理の実行¶
CloudFormationスタックの作成
CloudFormationスタックを作成します。
変数の確認:
cat << END # CLOUDFORMATION_STACK_NAME:"handson-cli-env-stack" CLOUDFORMATION_STACK_NAME="${CLOUDFORMATION_STACK_NAME}" # CLOUDFORMATION_TEMPLATE_URL:"https://materials-opscli.s3.ap-northeast-1.amazonaws.com/templates/handson-cli-env-cloudshell.template" CLOUDFORMATION_TEMPLATE_URL="${CLOUDFORMATION_TEMPLATE_URL}" ENDコマンド:
aws cloudformation create-stack \ --stack-name "${CLOUDFORMATION_STACK_NAME}" \ --template-url ${CLOUDFORMATION_TEMPLATE_URL} \ --capabilities 'CAPABILITY_NAMED_IAM'結果(例):
{ "StackId": "arn:aws:cloudformation:ap-northeast-1:XXXXXXXXXXXX:stack/handson-cli-env-stack/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" }
完了確認¶
「CloudFormationスタック"handson-cli-env-stack"が存在する。」ことを確認します。
コマンド:
aws cloudformation list-stacks \ --query "StackSummaries[? \ StackName == \`${CLOUDFORMATION_STACK_NAME}\` \ && StackStatus != \`DELETE_COMPLETE\` \ ].StackName" \ --output text結果(例):
handson-cli-env-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-env-stack/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
「CloudFormationスタック"handson-cli-env-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}結果(例):
CREATE_COMPLETE
注釈
ステータスがROLLBACKになった場合は、イベントを確認して原因を特定します。
コマンド:
aws cloudformation describe-stack-events \ --stack-name ${CLOUDFORMATION_STACK_NAME}結果(例):
(省略)
手順の完了¶
(参考) マネジメントコンソールの確認¶
CloudFormationダッシュボード( https://console.aws.amazon.com/cloudformation/home)にアクセスします。
右上のリージョンメニューから"東京"を選択します。
左ハンバーガーメニューをクリックします。
左ペインが表示されます。
左ペインの"スタック"をクリックします。
スタック一覧(画面)
検索欄にスタック名"handson-cli-env-stack"を入力し、エンターキーを押します。
スタック名"handson-cli-env-stack"が表示されていることを確認します。
スタック名"handson-cli-env-stack"のステータスが'CREATE_COMPLETE'であることを確認します。