[AWS] 東京に上陸したAWSIoTAnalyticsにデータを蓄積してSQLで引っこ抜くまで

# はじめに

みなさんはIoTデバイスのデータをどこにためていますか？RDSですか？DynamoDBですか？それともS3ですか？
私はDynamoDBにデータを貯めることが大半です。DynamoDBはセンサーデータを貯めるのにかなり適していると思ってます。
ですがAWSIoTのサービス群には、ちゃんとデータを蓄積するためのサービスがあるんです。それが **AWSIoTAnalytics** です。
しかも蓄積するだけでなく、分析することもできます。
先日東京リージョンに上陸したので、どんなものなのか体感するために使ってみました。

## AWSIoTAnalyticsとは？

```text
AWS IoT Analytics は、膨大な量の IoT データの高度な分析を簡単に実行および操作できる完全マネージド型サービスです。
IoT分析プラットフォームの構築に通常伴うコストや複雑さについて心配する必要はありません。このサービスは、IoT アプリケーションや
Machine Learning のユースケースで最適かつ正確な判断を下すために、IoT データを分析してインサイトを得る最も簡単な手段です。
```

[引用はこちら](https://aws.amazon.com/jp/iot-analytics/)

サービスとしてはAWSIoTCoreを利用してAWSにデータを送信しているIoTデバイスのデータを蓄積して分析するためのサービスのようです。

## とりあえず試す

では早速試していきましょう。

### 準備

まずデータを蓄積する準備をしていきます。

#### チャネル

チャネルではAWSIoTCoreのどのトピックにPublishされたメッセージを取得するかを設定します。

![AWS IoT Analytics 2018-10-11 09-49-08.png](https://qiita-image-store.s3.amazonaws.com/0/95875/f9a67fbf-d855-2280-7fcb-d0ba49689928.png)

![AWS IoT Analytics 2018-10-11 09-55-56.png](https://qiita-image-store.s3.amazonaws.com/0/95875/26816d82-f82c-543e-f4e3-834e5774e942.png)

#### データストア

データを蓄積するためのデータストアを作成します。

![AWS IoT Analytics 2018-10-11 09-59-44.png](https://qiita-image-store.s3.amazonaws.com/0/95875/2f8e3d7c-0870-c26b-6427-9becf6ffa16c.png)

#### パイプライン

パイプラインでは、チャネルで取得したメッセージをデータストアに蓄積するための設定をします。

![AWS IoT Analytics 2018-10-11 10-02-25.png](https://qiita-image-store.s3.amazonaws.com/0/95875/069af05f-7351-633a-9e3b-db3ebe6c3e9d.png)

![AWS IoT Analytics 2018-10-11 10-09-42.png](https://qiita-image-store.s3.amazonaws.com/0/95875/2179fbef-ceac-bfcd-cf05-747d9e1cfa81.png)

![AWS IoT Analytics 2018-10-11 10-11-36.png](https://qiita-image-store.s3.amazonaws.com/0/95875/cbcbf990-a073-5e6f-3b8c-0d204dc14f00.png)

![AWS IoT Analytics 2018-10-11 10-12-56.png](https://qiita-image-store.s3.amazonaws.com/0/95875/fb342d58-4770-8b7e-2484-0cc60700e151.png)

### 分析

蓄積したデータを分析していきます。
今回はSQLで引っこ抜くことだけします。

#### データセット

データストアに対してどのようなデータの取得をするか設定していきます。

![AWS IoT Analytics 2018-10-11 10-23-43.png](https://qiita-image-store.s3.amazonaws.com/0/95875/3b8e2b66-f45b-6e35-7a27-76083b05e967.png)

![AWS IoT Analytics 2018-10-11 10-25-00.png](https://qiita-image-store.s3.amazonaws.com/0/95875/b1818782-a225-6b28-e274-ab86c373df09.png)

![AWS IoT Analytics 2018-10-11 10-26-34.png](https://qiita-image-store.s3.amazonaws.com/0/95875/a8be4a96-81f8-9392-9d6c-4fbd9c47caaa.png)

今回はデータ選択ウィンドウは使用しない。
![AWS IoT Analytics 2018-10-11 10-27-43.png](https://qiita-image-store.s3.amazonaws.com/0/95875/f3a2cad3-39d7-c610-6875-dc59537517cd.png)

スケジュールも設定しません。
![AWS IoT Analytics 2018-10-11 10-28-07.png](https://qiita-image-store.s3.amazonaws.com/0/95875/846c83ab-1055-1756-2ab6-8b4b07ad5bd3.png)

スケジュールはこのような粒度で設定できます。
![AWS IoT Analytics 2018-10-11 10-30-23.png](https://qiita-image-store.s3.amazonaws.com/0/95875/33618835-253d-4dd7-63fc-accc09ae7589.png)

![AWS IoT Analytics 2018-10-11 10-28-32.png](https://qiita-image-store.s3.amazonaws.com/0/95875/febce411-51f2-4024-8cef-776788ef2b15.png)

作成したあとリスト画面から先程作成したデータセットを選択して右上のメニューを開き、クエリを実行します。
![AWS IoT Analytics 2018-10-11 10-31-15.png](https://qiita-image-store.s3.amazonaws.com/0/95875/648d91c0-d24a-cb62-be4d-718f3d74891d.png)

成功すればこのように結果が表示されます。
![AWS IoT Analytics 2018-10-11 10-32-48.png](https://qiita-image-store.s3.amazonaws.com/0/95875/867124c7-7825-f7ae-cb85-35bedb77f139.png)

## 最後に

これでデータを蓄積して取得することができました。
まだ本格的に使っていないのでつかめていないところが多いのですが、単純にデータを蓄積するまでが楽になりましたし、DynamoDBではできないSQLでデータを取得するということもできました。
いざ本格的にデータを流したらどうなるのか？頻繁にクエリを実行したらどうなるのか？疑問点はまだまだ多いですが、使い勝手は良いと思います。
またデータストアを利用して、Jupyterノートブックでデータを分析することもできるので、今まで以上にデータ分析が捗るのかなという感じですね。
ではまた！