[JAWS-UG CLI] Amazon Kinesis Firehose re:入門 (6) 関連リソースの削除

# この記事について

[JAWS-UG CLI専門支部 #90 Kinesis Firehose 復習編](https://jawsug-cli.doorkeeper.jp/events/59236)で実施するハンズオン用の手順書です。


# 前提条件

## 必要な権限

作業にあたっては、以下の権限を有したIAMユーザもしくはIAMロールを利用してください。

- 以下のサービスに対するフルコントロール権限
    - Kinesis Firehose
    - IAM
    - EC2
    - S3
    - CloudWatch Logs
    - STS
    - (Lambda)
        - データの変換を行う場合
    - (KMS)
        - データの暗号化を行う場合


# 0. 準備

## 0.1. リージョンを指定

オレゴンリージョンで実施します。（東京マダー？）

```bash:コマンド
export AWS_DEFAULT_REGION="us-west-2"
```

## 0.2. 資格情報を確認


```bash:コマンド
aws configure list
```

インスタンスプロファイルを設定したEC2インスタンスでアクセスキーを設定せずに実行した場合、以下のようになります。

```text:結果
      Name                    Value             Type    Location
      ----                    -----             ----    --------
   profile                <not set>             None    None
access_key     ****************QSAA         iam-role
secret_key     ****************c1xY         iam-role
    region                us-west-2              env    AWS_DEFAULT_REGION
```

## 0.3. バージョン確認

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

```text:結果
aws-cli/1.11.129 Python/2.7.12 Linux/4.9.38-16.33.amzn1.x86_64 botocore/1.5.92
```

## 0.4. バージョンアップ（必要に応じて）

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

## 0.5. 変数の確認

```bash:コマンド
cat << ETX

    CF_STACK_NAME: ${CF_STACK_NAME}

ETX
```



# 1. Stackの削除

## 1.1. Stackの削除

### Stack名の確認

```bash:コマンド
cat << ETX

    CF_STACK_NAME: ${CF_STACK_NAME}

ETX
```

```text:結果

    CF_STACK_NAME: firehose-jawsug-cli

```


### Stackの確認

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

```json:結果
{
    "Stacks": [
        {
            "StackId": "arn:aws:cloudformation:us-west-2:XXXXXXXXXXXX:stack/firehose-jawsug-cli/5d4aac10-7aba-11e7-bd3e-50a686be738e",
            "Description": "JAWS-UG CLI Kinesis Firehose Hands-on",
            "Parameters": [
                {
                    "ParameterValue": "XXXXXXXXXXXX_firehose_jawsug_cli",
                    "ParameterKey": "KeyPairName"
                },
                {
                    "ParameterValue": "10.0.0.0/16",
                    "ParameterKey": "VPCNetworkAddress"
                },
                {
                    "ParameterValue": "10.0.0.0/24",
                    "ParameterKey": "PublicSubnetAddr"
                }
            ],
            "Tags": [],
            "Outputs": [
                {
                    "OutputKey": "PublicIP",
                    "OutputValue": "34.209.250.207"
                },
                {
                    "OutputKey": "IAMRoleARN",
                    "OutputValue": "arn:aws:iam::XXXXXXXXXXXX:role/service-role-firehose"
                },
                {
                    "OutputKey": "S3BucketName",
                    "OutputValue": "firehose-jawsug-cli-s3bucket-1qtuo76w7zanq"
                }
            ],
            "CreationTime": "2017-08-06T15:17:30.587Z",
            "Capabilities": [
                "CAPABILITY_NAMED_IAM"
            ],
            "StackName": "firehose-jawsug-cli",
            "NotificationARNs": [],
            "StackStatus": "CREATE_COMPLETE",
            "DisableRollback": false
        }
    ]
}
```


### Stackの削除

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


### Stackの削除を待機

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

**【注意】スタックを完全に削除できない場合があります。原因を解消し再試行してください。**

想定される原因として、以下の様なものが考えられます。

- S3バケットにデータが残っている
- IAMロールにCloudFormation以外の手段でポリシーをアタッチしている


### Stackの確認

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

```text:結果
An error occurred (ValidationError) when calling the DescribeStacks operation: Stack with id firehose-jawsug-cli does not exist
```


以上