[JAWS-UG CLI] #91 Amazon Inspector入門 (9.1) : Inspector実行用CloudWatch Events作成


AWS CLIを利用して、Inspectorを定期実行するCloudWatch Eventsを作成します


前提条件
========
本手順は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)

cloudwatch Eventへの権限
-----------

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


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作成用変数指定
-----------------------

実行スケジュールをCron形式 or Rate形式で設定します。必要に応じて実行時間を設定してください。

```bash:コマンド:
EVENTS_RULE_NAME='inspector-event'
EVENT_RULE_DESC="Schedules a recurring Amazon Inspector assessment run"
EVENT_SCHEDULE_EXP='rate(30 minutes)'
```

結果:

      (戻り値なし)


1.2.CloudWatch Events作成用確認
-----------------------
```bash:コマンド:
cat << ETX

  EVENTS_RULE_NAME:    ${EVENTS_RULE_NAME}
  EVENT_SCHEDULE_EXP:  ${EVENT_SCHEDULE_EXP}
  EVENT_RULE_DESC:    "${EVENT_RULE_DESC}"

ETX
```

結果(例):

      EVENTS_RULE_NAME:    inspector-event
      EVENT_SCHEDULE_EXP:  rate(30 minutes)
      EVENT_RULE_DESC:    "Schedules a recurring Amazon Inspector assessment run"

1.3.CloudWatch Eventsルール作成
-----------------------
```bash:コマンド:
aws events put-rule \
  --name ${EVENTS_RULE_NAME} \
  --schedule-expression "${EVENT_SCHEDULE_EXP}" \
  --description "${EVENT_RULE_DESC}"
```

結果(例):

     {
         "RuleArn": "arn:aws:events:ap-northeast-1:xxxxx:rule/inspector-event"
     }



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

結果(例):

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


2.1.CloudWatch Eventsターゲット用変数指定
-------------------

```bash:コマンド:
EVENTS_TARGET_ID='AllowScheduledEvents'
EVENTS_TARGETS="Id=${EVENTS_TARGET_ID},Arn=${ASSESSMENT_TEMPLATE_ARN},RoleArn=${IAM_ROLE_ARN}"
```

2.2.CloudWatch Eventsターゲット用確認
-------------------

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

  EVENTS_TARGET_ID:         ${EVENTS_TARGET_ID}
  ASSESSMENT_TEMPLATE_ARN:  ${ASSESSMENT_TEMPLATE_ARN}
  IAM_ROLE_ARN:             ${IAM_ROLE_ARN}
  EVENTS_TARGETS:           ${EVENTS_TARGETS}

ETX
```

結果(例):

      EVENTS_TARGET_ID:         AllowScheduledEvents
      ASSESSMENT_TEMPLATE_ARN:  arn:aws:inspector:ap-northeast-1:xxxxxx:target/0-Fp4q8TH8/template/0-ZoCnFzvx
      IAM_ROLE_ARN:             arn:aws:iam::xxxxxx:role/Inspector_Assessment_Role
      EVENTS_TARGETS:           Id=AllowScheduledEvents,Arn=arn:aws:inspector:ap-northeast-1:xxxxx:target/0-Fp4q8TH8/template/0-ZoCnFzvx,RoleArn=arn:aws:iam::xxxxx:role/Inspector_Assessment_Role

2.3.CloudWatch Eventsターゲット追加
-------------------

```bash:コマンド:
aws events put-targets \
  --rule ${EVENTS_RULE_NAME} \
  --targets ${EVENTS_TARGETS}
```

結果(例):

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

2.4.CloudWatch Eventsターゲット追加確認
-------------------

```bash:コマンド:
aws events list-targets-by-rule --rule ${EVENTS_RULE_NAME}
```

結果(例):

     {
         "Targets": [
             {
                 "RoleArn": "arn:aws:iam::549352348160:role/Inspector_Assessment_Role",
                 "Id": "AllowScheduledEvents",
                 "Arn": "arn:aws:inspector:ap-northeast-1:xxxxxx:target/0-Fp4q8TH8/template/0-ZoCnFzvx"
             }
         ]
     }

作成後、30分毎にスケジュールで診断が実行されます。

====
完了