SSM + S3 +  Athena +  QuickSight でEC2のイベントリ情報を可視化する


#1.EC2#

EC2に`AmazonSSMManagedInstanceCore`を付与したIAMロールを作成しておき、

-  Amazon Linux 2 
-  Microsoft Windows Server 2019 Base 

2つのEC2インスタンスを起動し、作成したIAMロールを付与しておく。



#2.SSM インベントリ#
【1.EC2】で作成したEC2インスタンスにはあらかじめ、SSM Agentがインストールされているので、
「マネージドインスタンス」を開くと、2つのインスタンスが起動していることがわかる。
![スクリーンショット 2020-05-03 16.44.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/f0f2e310-cfd3-d685-3bcf-609a917657a6.png)

「インベントリ」から、セットアップイベントリを設定する。（設定はとりあえず全てデフォルトにする）
![スクリーンショット 2020-05-03 16.47.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/f730fdbc-4219-f340-25a0-474cf05583a6.png)

「マネージドインスタンス」の各EC2インスタンスの「イベントリ」で収集されていることがわかる。
![スクリーンショット 2020-05-03 16.51.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/bffa0044-c098-f4bd-a0fd-f1b4ef9f5323.png)

ここまでで、EC2のイベントリを取得することができた。


#3.S3#

インベントリデータ保存用のバケットを作成する。

[インベントリのリソースデータの同期の設定](https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/sysman-inventory-datasync.html)
の通りバケットポリシーを作成する。

```json
{
   "Version":"2012-10-17",
   "Statement":[
      {
         "Sid":"SSMBucketPermissionsCheck",
         "Effect":"Allow",
         "Principal":{
            "Service":"ssm.amazonaws.com"
         },
         "Action":"s3:GetBucketAcl",
         "Resource":"arn:aws:s3:::bucket-name"
      },
      {
         "Sid":" SSMBucketDelivery",
         "Effect":"Allow",
         "Principal":{
            "Service":"ssm.amazonaws.com"
         },
         "Action":"s3:PutObject",
         "Resource":[
            "arn:aws:s3:::bucket-name/bucket-prefix/*/accountid=account-id-1/*"
         ],
         "Condition":{
            "StringEquals":{
               "s3:x-amz-acl":"bucket-owner-full-control"
            }
         }
      }
   ]  
}
```



#4.SSM　リソースデータ#

「インベントリ」から「リソースデータ同期の作成」で作成していきます。
![スクリーンショット 2020-05-03 17.04.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/414fcf2b-dfd9-7a91-f805-e2f3f8444e5f.png)

【3.S3】で作成したS3バケットを選択する。
![スクリーンショット 2020-05-03 17.07.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/04551295-0a11-2c9f-fa11-a38d94d5cde8.png)

S3バケットを確認すると、同期されていることが確認できる。
![スクリーンショット 2020-05-04 16.07.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/aaf3e9bc-27e1-21a6-8f12-2d5679e6ce70.png)

ここまでの作業で、EC2インスタンスのイベントリ情報がS3に保存された。


#5.Quicksight　Athena#

「Amazon S3」にチェックを入れて、【3.S3】で作成したS3バケットを指定する。
![スクリーンショット 2020-05-04 16.04.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/47a0e0d7-4778-d242-d9f0-e5d1f8a303fa.png)

「Athena」のデータセットを作成していく。
![スクリーンショット 2020-05-04 16.11.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/dc585aae-b3f2-71cf-6ea7-0ab2f9d06cac.png)

「データベース」と「テーブル」を選択する。※データベースは、S3バケット名が書かれたものを選択する。
![スクリーンショット 2020-05-04 16.15.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/4e4359ff-6691-2b7c-ab8f-056624a8abbc.png)

「データクエリを直接実行」を選択。※ちなみにSPICEは、Quicksightのオンメモリデータストアで迅速に画面を操作するためにある。
![スクリーンショット 2020-05-04 16.17.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/52707b20-53eb-2a9a-aec7-3844fd172e07.png)

「Architecture」を「円グラフ」で表したもの。
![スクリーンショット 2020-05-04 16.23.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/77f84e0a-7638-9a3e-4836-f70660332b2a.png)

「name」「version」で「name(カウント)」とし、「テーブル」で可視化したもの。
![スクリーンショット 2020-05-04 16.29.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/e2191c81-9c9c-8f57-1f1e-dc230a77873a.png)


---
※QuickSight についてもう少し詳しくやりたい方は↓。
[AWS QuickSight demo](https://qiita.com/leomaro7/items/609e4438cbf84d370698)