[JAWS-UG CLI] #91 Amazon Inspector入門 (10) : Inspector関連リソース削除



# この記事について
本手順はJAWS-UG CLI専門支部の実施したハンズオン手順です。 
全工程については下記総合案内をご確認ください。
[#91 Amazon Inspector 入門 (CloudWatch Eventで定期診断編)](http://qiita.com/tcsh/items/b55eee599ae2c8806e4f#91-inspector-%E5%85%A5%E9%96%80-cloudwatch-event%E3%81%A7%E5%AE%9A%E6%9C%9F%E8%A8%BA%E6%96%AD%E7%B7%A8)

課金が発生する項目のみ削除します。 
IAMロールとIAMポリシーについてはマネコンか作成手順書を参考に削除してください。

# 前提条件


## 必要な権限

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

- 以下のサービスに対するフルコントロール権限
    - IAM
    - EC2
    - CloudWatch Event
    - Inspector


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

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

- AWS CLI 1.11.122

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

結果(例):

     aws-cli/1.11.122 Python/2.7.10 Linux/4.1.27-25.49.amzn1.x86_64 botocore/1.5.85

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

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


0. 準備
=======

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

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

        AWS_DEFAULT_PROFILE: (0.1) ${AWS_DEFAULT_PROFILE}

ETX
```

結果(例):

        AWS_DEFAULT_PROFILE: (0.1) xxxxxx

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


0.1. プロファイルの指定
-----------------------

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

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

結果(例):

      iamFull-prjz-mbpr13
      <IAMのフル権限を許可されたプロファイル>

```bash:変数の設定:
export AWS_DEFAULT_PROFILE='<IAMのフル権限を許可されたプロファイル>'
```


最終確認
--------------

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

        AWS_DEFAULT_PROFILE: (0.1) ${AWS_DEFAULT_PROFILE}

ETX
```

結果(例):

        AWS_DEFAULT_PROFILE: (0.1) xxxxxx


 本作業
===========
1.1.CloudWatch Events削除
-----------------------


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

  EVENTS_RULE_NAME:    ${EVENTS_RULE_NAME}
  EVENTS_TARGET_ID:    ${EVENTS_TARGET_ID}

ETX
```

結果:

      EVENTS_RULE_NAME:    inspector-event
      EVENTS_TARGET_ID:    AllowScheduledEvents


1.2.CloudWatch Eventsルール確認
-----------------------
```bash:コマンド:
aws events describe-rule --name \
  ${EVENTS_RULE_NAME}
```

結果(例):

     {
         "ScheduleExpression": "rate(30 minutes)",
         "Name": "inspector-event",
         "State": "ENABLED",
         "Arn": "arn:aws:events:ap-northeast-1:xxxxx:rule/inspector-event",
         "Description": "Schedules a recurring Amazon Inspector assessment run"
     }

1.3.CloudWatch Eventsターゲット削除
-----------------------
```bash:コマンド:
aws events remove-targets \
  --rule ${EVENTS_RULE_NAME} \
  --ids ${EVENTS_TARGET_ID}
```

結果(例):

     {
         "FailedEntries": [],
         "FailedEntryCount": 0
     }

1.4.CloudWatch Eventsルール削除
-----------------------
```bash:コマンド:
aws events delete-rule --name \
  ${EVENTS_RULE_NAME}
```

結果(例):

     出力なし


1.5.CloudWatch Eventsルール削除確認
-----------------------
```bash:コマンド:
aws events describe-rule --name \
  ${EVENTS_RULE_NAME}
```

結果(例):

     An error occurred (ResourceNotFoundException) when calling the DescribeRule operation: Rule inspector-event does not exist.


2.1.Inspector削除
-----------------------


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

  ASSESSMENT_TARGET_ARN:    ${ASSESSMENT_TARGET_ARN}

ETX
```

結果:

     ASSESSMENT_TARGET_ARN:    arn:aws:inspector:ap-northeast-1:969698055101:target/0-z0z4RqO8

2.2.InspectorのAssessment Target確認
-------------------
```bash:コマンド:
aws inspector describe-assessment-targets \
  --assessment-target-arns ${ASSESSMENT_TARGET_ARN}
```
結果(例):

     {
         "assessmentTargets": [
             {
                 "resourceGroupArn": "arn:aws:inspector:ap-northeast-1:xxxxx:resourcegroup/0-0OAlSLLu",
                 "createdAt": 1503037554.598,
                 "name": "Inspector_target",
                 "arn": "arn:aws:inspector:ap-northeast-1:xxxxx:target/0-wAZEOH5F",
                 "updatedAt": 1503037554.598
             }
         ],
         "failedItems": {}
     }

2.3.InspectorのAssessment Target削除
-------------------
assessment-targetを削除すると関連するテンプレートと結果が全て削除されます

```bash:コマンド:
aws inspector delete-assessment-target \
  --assessment-target-arn ${ASSESSMENT_TARGET_ARN}
```
結果(例):

     出力なし

2.4.InspectorのAssessment Target確認
-------------------
```bash:コマンド:
aws inspector describe-assessment-targets \
  --assessment-target-arns ${ASSESSMENT_TARGET_ARN}
```
結果(例):

      {
          "assessmentTargets": [],
          "failedItems": {
              "arn:aws:inspector:ap-northeast-1:xxxxx:target/0-z0z4RqO8": {
                  "retryable": false,
                  "failureCode": "ITEM_DOES_NOT_EXIST"
              }
          }
      }


3.1.診断用IEC2インスタンス削除
-------------------
```bash:コマンド:
cat << ETX

  EC2_INSTANCE_ID:   ${EC2_INSTANCE_ID}

ETX
```

結果(例):

      EC2_INSTANCE_ID:   i-xxxxxxxxxxxx

3.2.診断用IEC2インスタンス確認
-------------------
```bash:コマンド:
aws ec2 describe-instances --instance-ids ${EC2_INSTANCE_ID} \
  --query 'Reservations[].Instances[].State.Name'
```

結果(例):

     [
         "running"
     ] 

3.3.診断用IEC2インスタンス削除
-------------------
```bash:コマンド:
aws ec2 terminate-instances --instance-ids ${EC2_INSTANCE_ID}
```

結果(例):

     {
         "TerminatingInstances": [
             {
                 "InstanceId": "i-xxxxxxxxxxxx",
                 "CurrentState": {
                     "Code": 32,
                     "Name": "shutting-down"
                 },
                 "PreviousState": {
                     "Code": 16,
                     "Name": "running"
                 }
             }
         ]
     }

3.4.診断用IEC2インスタンス削除確認
-------------------
```bash:コマンド:
aws ec2 describe-instances --instance-ids ${EC2_INSTANCE_ID} \
  --query 'Reservations[].Instances[].State.Name'
```

結果(例):

     [
         "terminated"
     ] 

完了
======