AWS IoT Core - Amazon Timestream

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

AWS IoT Core

AWS IoT Core を使用して IoT デバイスからデータを収集し、IoT Core ルールアクションを介して Amazon Timestream にデータをルーティングできます。 AWS IoT ルールアクションは、ルールがトリガーされたときに何をするかを指定します。Amazon Timestream テーブル、Amazon DynamoDB データベースにデータを送信し、 AWS Lambda 関数を呼び出すアクションを定義できます。

IoT ルールの Timestream アクションは、受信メッセージから Timestream に直接データを挿入するために使用されます。アクションは IoT Core SQL ステートメントの結果を解析し、データを 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 ルールアクションが作成された場合、測定名の温度と湿度、および測定値がそれぞれ 24.04 と 43.605 のレコードが Timestream に追加されます。

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

メジャーのデータ型は、メッセージペイロードの値のデータ型から推測されます。整数、二重、ブール、文字列などのJSONデータ型は、それぞれ BIGINT、Word、DOUBLE、BOOLEANVARCHAR の Timestream データ型にマッピングされます。cast() 関数を使用して、特定のデータ型にデータを強制することもできます。測定のタイムスタンプを指定できます。タイムスタンプを空白のままにすると、エントリが処理された時間が使用されます。

詳細については、Timestream ルールアクションのドキュメントを参照してください。

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

前提条件

  1. 「」で説明されている手順に従って、Amazon Timestream にデータベースを作成します データベースを作成する

  2. 「」で説明されている手順に従って、Amazon Timestream でテーブルを作成しますテーブルの作成

コンソールを使用する場合

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

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

    SELECT temperature as temp, humidity from 'iot/topic'
  3. アクションリストから Timestream を選択する

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

  5. ルールをテストするには、ここに記載されている手順に従ってください。

CLI の使用

コマンドラインインターフェイス (AWS CLI) AWS をインストールしていない場合は、ここからインストールします。

  1. 次のルールペイロードを timestream_rule.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 }
  2. 次のコマンドを使用してトピックルールを作成する

    aws iot create-topic-rule --rule-name timestream_test --topic-rule-payload file://<path/to/timestream_rule.json> --region us-east-1
  3. 次のコマンドを使用してトピックルールの詳細を取得する

    aws iot get-topic-rule --rule-name timestream_test
  4. 次のメッセージペイロードを timestream_msg.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 }
  5. 次のコマンドを使用してルールをテストする

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

サンプルアプリケーション

Timestream with AWS IoT Core の使用を開始するために、トピックルールを作成するために必要なアーティファクトを AWS IoT Core と Timestream に作成する完全に機能するサンプルアプリケーションと、データをトピックに公開するためのサンプルアプリケーションを作成しました。

  1. GitHub の指示に従って、 AWS IoT Core 統合用のサンプルアプリケーションの GitHub リポジトリのクローンを作成する

  2. README の手順に従って、An AWS CloudFormation テンプレートを使用して Amazon Timestream と AWS IoT Core で必要なアーティファクトを作成し、サンプルメッセージをトピックに発行します。

チュートリアル動画

このビデオでは、IoT Core が Timestream とどのように連携するかについて説明します。