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


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


この手順の目的
====================

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


作業対象
===============

- CloudFormationサービス


標準時間
========

8分



前提条件
========


作業権限
------------------

### CloudFormationへの権限 ]-

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


作業環境
--------------------

### AWS CLIのバージョン ]-

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

- AWS CLI 1.11.14

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

結果(例):

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

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

```bash:コマンド:
sudo -H pip install -U awscli
```


開始条件
========


作業に必要なモノ・情報
---------------------------------

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

- CloudFormationスタック名

  - 削除するCloudFormationスタックの名称です。

  - 今回は"BasicWebServerInVPC"とします。


0. 準備
=======

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

```bash:変数の確認:
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. プロファイルの指定
-----------------------

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

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

結果(例):

      iamFull-prjz-mbpr13
      <CloudFormationのフル権限が許可されているプロファイル>

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


0.2. リージョンの決定
---------------------

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


0.3. スタック名の指定
---------------------

```bash:変数の設定:
CF_STACK_NAME='BasicWebServerInVPC'
```


再確認
------

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

```bash:変数の確認:
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"は存在することを確認します。

```bash:コマンド:
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. スタックの削除
-------------------

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

        CF_STACK_NAME: ${CF_STACK_NAME}

ETX
```

```bash:コマンド:
aws cloudformation delete-stack \
        --stack-name ${CF_STACK_NAME}
```

結果:

      (戻り値なし)


2.2. ステータスの確認
---------------------

```bash:コマンド:
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になった場合は、イベントを確認して原因を特定します。

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

結果(例):

      (省略)


3. 事後作業
===========


3.1. 完了条件の確認
-------------------

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

```bash:コマンド:
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


完了
====