

Amazon Timestream for LiveAnalytics に類似した機能をご希望の場合は Amazon Timestream for InfluxDB をご検討ください。リアルタイム分析に適した、シンプルなデータインジェストと 1 桁ミリ秒のクエリ応答時間を特徴としています。詳細については、[こちら](https://docs.aws.amazon.com//timestream/latest/developerguide/timestream-for-influxdb.html)を参照してください。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# AWS IoT Core
<a name="IOT-Core"></a>

 [AWS IoT Core](https://docs.aws.amazon.com/iot/latest/developerguide/iot-gs.html) を使用して IoT デバイスからデータを収集し、IoT Core ルールアクションを介して Amazon Timestream にデータをルーティングできます。AWSIoT ルールアクションは、ルールがトリガーされたときに行う動作を指定します。Amazon Timestream テーブル、Amazon DynamoDB データベースにデータを送信し、AWS Lambda 関数を呼び出すアクションを定義できます。

 IoT ルールの Timestream アクションは、受信メッセージから Timestream にデータを直接挿入するために使用されます。このアクションは [IoT Core SQL](https://docs.aws.amazon.com/iot/latest/developerguide/iot-sql-reference.html) ステートメントの結果を解析し、データを Timestream に保存します。返された SQL 結果セットのフィールドの名前は measure::name として使用され、フィールドの値は measure::value です。

 例えば、SQL ステートメントとサンプルメッセージペイロードを考えてみましょう。

```
SELECT temperature, humidity from 'iot/topic'
```

```
{
  "dataFormat": 5, 
  "rssi": -88,
  "temperature": 24.04,    
  "humidity": 43.605,    
  "pressure": 101082,    
  "accelerationX": 40,    
  "accelerationY": -20,    
  "accelerationZ": 1016,    
  "battery": 3007,    
  "txPower": 4,    
  "movementCounter": 219,    
  "device_id": 46216,
  "device_firmware_sku": 46216   
}
```

 上記の SQL ステートメントを使用して Timestream の IoT Core ルールアクションが作成されると、2 つのレコードが Timestream に追加されます。それぞれメジャー名は temperature と humidity、メジャー値は 24.04 と 43.605 です。

 SELECT ステートメントの AS 演算子を使用して、Timestream に追加されるレコードのメジャー名を変更できます。下の SQL ステートメントは、temperature の代わりにメッセージ名 temp でレコードを作成します。

 メジャーのデータ型は、メッセージペイロードの値のデータ型から推測されます。integer、double、boolean、string の JSON データ型は、BIGINT、DOUBLE、BOOLEAN、VARCHAR の Timestream データ型にそれぞれマッピングされます。[cast()](https://docs.aws.amazon.com/iot/latest/developerguide/iot-sql-functions.html#iot-sql-function-cast) 関数を使用して、データを強制的に特定のデータ型にすることもできます。メジャーのタイムスタンプを指定できます。タイムスタンプが空白の場合は、エントリが処理された時刻が使用されます。

詳細については、[Timestream ルールアクションのドキュメント](https://docs.aws.amazon.com/iot/latest/developerguide/timestream-rule-action.html)を参照してください。

 Timestream にデータを保存する IoT Core ルールアクションを作成するには、以下の手順に従います。

**Topics**
+ [前提条件](#prereqs)
+ [コンソールを使用する](#using-console)
+ [CLI の使用](#using-cli)
+ [サンプルアプリケーション](#sample-app)
+ [チュートリアル動画](#video-tutorial)

## 前提条件
<a name="prereqs"></a>

1. 「[データベースを作成する](console_timestream.md#console_timestream.db.using-console)」で説明されている手順に従って、Amazon Timestream でデータベースを作成します。

1. 「[テーブルを作成する](console_timestream.md#console_timestream.table.using-console)」で説明されている手順に従って、Amazon Timestream でテーブルを作成します。

## コンソールを使用する
<a name="using-console"></a>

1. AWS IoT Core 用の AWS マネジメントコンソールを使用して、**[管理]** > **[メッセージルーティング]** > **[ルール]** をクリックしてから、**[ルールを作成]** をクリックしてルールを作成します。

1. ルール名を任意の名前に設定し、SQL を以下のテキストに設定します。

   ```
   SELECT temperature as temp, humidity from 'iot/topic' 
   ```

1. [アクション] リストから Timestream を選択します。

1. Timestream のデータベース、テーブル、ディメンション名と、Timestream にデータを書き込むロールを指定します。ロールが存在しない場合は、[ロールを作成] をクリックして作成できます。

1. ルールをテストするには、[こちら](https://docs.aws.amazon.com/iot/latest/developerguide/iot-ddb-rule.html#test-db-rule)で示されている手順に従います。

## CLI の使用
<a name="using-cli"></a>

 AWS コマンドラインインターフェイス (AWS CLI) をインストールしていない場合は、[こちら](https://aws.amazon.com/cli/)からインストールします。

1. 以下のルールペイロードを timestream\$1rule.json という名前の JSON ファイルに保存します。*arn:aws:iam::123456789012:role/TimestreamRole* を、Amazon Timestream にデータを保存するための AWS IoT アクセス権が付与されるロール ARN に置き換えます。

   ```
   { 
       "actions": [ 
               { 
                   "timestream": { 
                       "roleArn": "arn:aws:iam::123456789012:role/TimestreamRole", 
                       "tableName": "devices_metrics", 
                       "dimensions": [ 
                           { 
                               "name": "device_id", 
                               "value": "${clientId()}" 
                           }, 
                           { 
                               "name": "device_firmware_sku", 
                               "value": "My Static Metadata" 
                           } 
                       ], 
                       "databaseName": "record_devices" 
                   } 
               } 
       ], 
       "sql": "select * from 'iot/topic'", 
       "awsIotSqlVersion": "2016-03-23", 
       "ruleDisabled": false 
   }
   ```

1. 次のコマンドを使用してトピックルールを作成します。

   ```
   aws iot create-topic-rule --rule-name timestream_test --topic-rule-payload file://<path/to/timestream_rule.json> --region us-east-1 
   ```

1. 次のコマンドを使用してトピックルールの詳細を取得します。

   ```
   aws iot get-topic-rule --rule-name timestream_test 
   ```

1. 次のメッセージペイロードを timestream\$1msg.json という名前のファイルに保存します。

   ```
   {
     "dataFormat": 5, 
     "rssi": -88,
     "temperature": 24.04,    
     "humidity": 43.605,    
     "pressure": 101082,    
     "accelerationX": 40,    
     "accelerationY": -20,    
     "accelerationZ": 1016,    
     "battery": 3007,    
     "txPower": 4,    
     "movementCounter": 219,    
     "device_id": 46216,
     "device_firmware_sku": 46216   
   }
   ```

1. 次のコマンドを使用してルールをテストします。

   ```
   aws iot-data publish --topic 'iot/topic' --payload file://<path/to/timestream_msg.json>
   ```

## サンプルアプリケーション
<a name="sample-app"></a>

 Timestream を AWS IoT Core と共に使い始めるのに役立つよう、トピックルールを作成するための AWS IoT Core と Timestream の必要なアーティファクトを作成する完全に機能するサンプルアプリケーションと、トピックにデータを発行するためのサンプルアプリケーションを作成しました。

1.  [GitHub](https://docs.github.com/en/free-pro-team@latest/github/creating-cloning-and-archiving-repositories/cloning-a-repository) の指示に従って、AWS IoT Core 統合の[サンプルアプリケーション](https://github.com/awslabs/amazon-timestream-tools/blob/master/integrations/iot_core)向けの GitHub リポジトリのクローンを作成します。

1. [README](https://github.com/awslabs/amazon-timestream-tools/blob/master/integrations/iot_core) の指示に従い、AWS CloudFormation テンプレートを使用して Amazon Timestream と AWS IoT Core で必要なアーティファクトを作成し、サンプルメッセージをトピックに発行します。

## チュートリアル動画
<a name="video-tutorial"></a>

こちらの[動画](https://youtu.be/00Wersoz2Q4)では、IoT Core と Timestream の連携について説明しています。