Help us understand the problem. What is going on with this article?

[JAWS-UG CLI] CloudFormation:#6 スタックの削除

More than 3 years have passed since last update.

.. 後始末. CloudFormation スタックの削除

この手順の目的

CloudFormationスタック"BasicWebServerInVPC"を削除します。

作業対象

  • CloudFormationサービス

標準時間

8分

前提条件

作業権限

CloudFormationへの権限 ]-

CloudFormationに対してフル権限があること。

作業環境

AWS CLIのバージョン ]-

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

  • AWS CLI 1.11.14
コマンド
aws --version

結果(例):

  aws-cli/1.11.97 Python/2.7.12 Linux/4.4.11-23.53.amzn1.x86_64 botocore/1.5.60

バージョンが古い場合は最新版に更新しましょう。

コマンド
sudo -H pip install -U awscli

開始条件

作業に必要なモノ・情報

作業開始には、以下が全て揃っていることが必要です。

  • CloudFormationスタック名

    • 削除するCloudFormationスタックの名称です。
    • 今回は"BasicWebServerInVPC"とします。

0. 準備

まず変数の確認をします。

変数の確認
cat << ETX

        AWS_DEFAULT_PROFILE: (0.1) ${AWS_DEFAULT_PROFILE}
        AWS_DEFAULT_REGION:  (0.2) ${AWS_DEFAULT_REGION}
        CF_STACK_NAME:       (0.4) ${CF_STACK_NAME}

ETX

結果(例):

  AWS_DEFAULT_PROFILE: (0.1) <CloudFormationのフル権限が許可されているプロファイル>
  AWS_DEFAULT_REGION:  (0.2) ap-northeast-1
  CF_STACK_NAME:       (0.4) BasicWebServerInVPC

変数が入っていない、適切でない場合は、それぞれの手順番号について作業を行います。

0.1. プロファイルの指定

プロファイルの一覧を確認します。

コマンド
cat ~/.aws/credentials \
       | grep '\[' \
       | sed 's/\[//g' | sed 's/\]//g'

結果(例):

  iamFull-prjz-mbpr13
  <CloudFormationのフル権限が許可されているプロファイル>
変数の設定
export AWS_DEFAULT_PROFILE='<CloudFormationのフル権限が許可されているプロファイル>'

0.2. リージョンの決定

変数の設定
export AWS_DEFAULT_REGION='ap-northeast-1'

0.3. スタック名の指定

変数の設定
CF_STACK_NAME='BasicWebServerInVPC'

再確認

設定されている変数の内容を再確認します。

変数の確認
cat << ETX

        AWS_DEFAULT_PROFILE: (0.1) ${AWS_DEFAULT_PROFILE}
        AWS_DEFAULT_REGION:  (0.2) ${AWS_DEFAULT_REGION}
        CF_STACK_NAME:       (0.4) ${CF_STACK_NAME}

ETX

結果(例):

  AWS_DEFAULT_PROFILE: (0.1) <CloudFormationのフル権限が許可されているプロファイル>
  AWS_DEFAULT_REGION:  (0.2) ap-northeast-1
  CF_STACK_NAME:       (0.4) BasicWebServerInVPC

1. 事前作業

1.1. 作業対象の状態確認

削除しようとしているCloudFormationスタック"BasicWebServerInVPC"は存在することを確認します。

コマンド
CF_STACK_STATUS=$( \
        aws cloudformation describe-stacks \
          --stack-name ${CF_STACK_NAME} \
          --query "Stacks[?StackName == \`${CF_STACK_NAME}\`].StackStatus" \
          --output text \
) \
        && echo ${CF_STACK_STATUS}

結果(例):

  CREATE_COMPLETE

2. 本作業

2.1. スタックの削除

変数の確認
cat << ETX

        CF_STACK_NAME: ${CF_STACK_NAME}

ETX
コマンド
aws cloudformation delete-stack \
        --stack-name ${CF_STACK_NAME}

結果:

  (戻り値なし)

2.2. ステータスの確認

コマンド
CF_STACK_STATUS=$( \
        aws cloudformation describe-stacks \
          --stack-name ${CF_STACK_NAME} \
          --query "Stacks[?StackName == \`${CF_STACK_NAME}\`].StackStatus" \
          --output text \
) \
        && echo ${CF_STACK_STATUS}

結果(例):

  DELETE_IN_PROGRESS

2.3. イベントの確認

ステータスがROLLBUCKになった場合は、イベントを確認して原因を特定します。

コマンド
aws cloudformation describe-stack-events \
        --stack-name ${CF_STACK_NAME}

結果(例):

  (省略)

3. 事後作業

3.1. 完了条件の確認

削除したCloudFormationスタック"BasicWebServerInVPC"が存在しないことを確認します。

コマンド
aws cloudformation describe-stacks \
        --stack-name ${CF_STACK_NAME}

結果(例):

  An error occurred (ValidationError) when calling the DescribeStacks operation: Stack with id BasicWebServerInVPC does not exist

完了

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away