Timestream - AWS IoT Core

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

Timestream

Timestream ルールアクションは、MQTT メッセージの属性 (メジャー) を Amazon Timestream テーブルに書き込みます。Amazon Timestream の詳細については、Amazon Timestream とはを参照してください。

注記

Amazon Timestream はすべての で利用できるわけではありません AWS リージョン。リージョンで Amazon Timestream を利用できない場合は、ルールアクションのリストには表示されません。

このルールが Timestream データベースに保存する属性は、ルールのクエリステートメントから得られた属性です。クエリステートメントの結果の各属性の値は、そのデータタイプを (DynamoDBv2 アクションにおけるのと同様に) 推測するために解析されます。各属性の値は、Timestream テーブルの独自のレコードに書き込まれます。属性のデータ型を指定または変更するには、クエリステートメントでcast()関数を使用します。各 Timestream レコードの内容の詳細については、「Timestream レコードコンテンツ」を参照してください。

注記

SQL V2 (2016-03-23) では、10.0 などの整数である数値は整数表現 (10) に変換されます。cast() 関数を使用するなどして、それらを Decimal値に明示的にキャストしても、この動作は妨げられず、結果は Integer 値のままです。これにより、データが Timestream データベースに記録されるのを妨げる、タイプの不一致エラーが発生する可能性があります。整数の数値を Decimal 値として処理するには、ルールクエリステートメントに SQL V1 (2015-10-08) を使用します。

注記

タイムストリームルールアクションが Amazon Timestream テーブルに書き込むことができる値の最大数は 100 です。詳細については、Amazon Timestream クォータのリファレンスを参照してください。

要件

このルールアクションには、以下の要件があります。

  • timestream:DescribeEndpointsおよび timestream:WriteRecordsオペレーションを実行するために引き受け AWS IoT ることができる IAM ロール。詳細については、「必要なアクセスを AWS IoT ルールに付与する」を参照してください。

    AWS IoT コンソールでは、 がこのルールアクションを実行することを許可するロールを選択、更新 AWS IoT 、または作成できます。

  • Timestream で保管中のデータを暗号化 AWS KMS するために顧客を使用する場合、サービスには AWS KMS key 発信者に代わって を使用するアクセス許可が必要です。詳細については、「 AWS のサービスが AWS KMS を使用する方法」を参照してください。

パラメータ

このアクションで AWS IoT ルールを作成するときは、次の情報を指定する必要があります。

databaseName

このアクションが作成したレコードを受信するテーブルを持つ Amazon Timestream データベースの名前。「tableName」も参照してください。

代替テンプレートをサポート: API および AWS CLI のみ

dimensions

各メジャーレコードに書き込まれる時系列のメタデータ属性。例えば、EC2 インスタンスの名前とアベイラビリティーゾーン、または風力タービンの製造元の名前はディメンションです。

name

メタデータディメンション名。これはデータベーステーブルレコード内の列の名前です。

ディメンションに、measure_namemeasure_valuetime の名前を付けることはできません。これらの名前は予約されています。ディメンション名は、ts_ または measure_value で始めることはできず、コロン (:) 文字を含めることはできません。

置換テンプレートをサポート: いいえ

value

データベースレコードのこの列に書き込む値。

置換テンプレートをサポート: はい

roleArn

Timestream データベーステーブルに書き込むためのアクセス許可を AWS IoT に付与するロールの Amazon リソースネーム (ARN)。詳細については、「要件」を参照してください。

置換テンプレートをサポート: いいえ

tableName

メジャーレコードを書き込むデータベーステーブルの名前。「databaseName」も参照してください。

代替テンプレートをサポート: API および AWS CLI のみ

timestamp

エントリのタイムスタンプに使用する値。空白の場合、エントリが処理された時刻が使用されます。

unit

value で説明されている式から得られるタイムスタンプ値の精度。

有効な値: SECONDS | MILLISECONDS | MICROSECONDS | NANOSECONDS。デフォルトはMILLISECONDSです。

value

長いエポック時間の値を返す式。

time_to_epoch(String, String) 関数を使用して、メッセージペイロードで渡される日付または時刻の値から有効なタイムスタンプを作成できます。

Timestream レコードコンテンツ

このアクションによって Amazon Timestream テーブルに書き込まれるデータには、タイムスタンプ、Timestream ルールアクションからのメタデータ、およびルールのクエリステートメントの結果が含まれます。

クエリステートメントの結果の各属性 (メジャー) について、このルールアクションは、これらの列を持つ指定された Timestream テーブルにレコードを書き込みます。

列名

属性タイプ

コメント

dimension-name

ディメンション

Timestream ルールアクションエントリで指定された値。

ルールアクションエントリで指定された各 [Dimension] (ディメンション) は、ディメンションの名前で Timestream データベースに列を作成します。

measure_name

MEASURE_NAME

属性の名前

measure_value::data-type 列で値が指定されているクエリステートメントの結果の属性の名前。

measure_value::data-type

MEASURE_VALUE

クエリステートメントの結果に含まれる属性の値。属性の名前は measure_name 列にあります。

値は解釈*され、次に対する最適なマッチとしてキャストされます: bigintbooleandoublevarchar。Amazon Timestream は、データ型ごとに個別の列を作成します。メッセージ内の値は、ルールのクエリステートメントでcast() 関数を使用して別のデータ型にキャストできます。

time

TIMESTAMP

データベース内のレコードの日時。

この値は、ルールエンジンまたは timestamp プロパティ (定義されている場合) によって割り当てられます。

* メッセージペイロードから読み取られた属性値は以下のように解釈されます。これらの各ケースの図については、「」を参照してください。

  • true または false の引用符で囲まれていない値は、boolean タイプとして解釈されます。

  • 10 進数値は double タイプとして解釈されます。

  • 小数点のない数値は bigint タイプとして解釈されます。

  • 引用符で囲まれた文字列は varchar タイプとして解釈されます。

  • オブジェクトと配列の値は JSON 文字列に変換され、varchar タイプとして保存されます。

次の JSON の例では、 ルールで代替テンプレートを使用して Timestream AWS IoT ルールアクションを定義します。

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

前の例で定義された Timestream トピックルールアクションを次のメッセージペイロードで使用すると、Amazon Timestream レコードが次の表に書き込まれます。

{ "boolean_value": true, "integer_value": 123456789012, "double_value": 123.456789012, "string_value": "String value", "boolean_value_as_string": "true", "integer_value_as_string": "123456789012", "double_value_as_string": "123.456789012", "array_of_integers": [23,36,56,72], "array of strings": ["red", "green","blue"], "complex_value": { "simple_element": 42, "array_of_integers": [23,36,56,72], "array of strings": ["red", "green","blue"] } }

次の表は、指定されたトピックルールアクションを使用して以前のメッセージペイロードが作成したものの処理を行うデータベースの列とレコードを示しています。device_firmware_sku および device_id 列は、トピックルールアクションで定義された DIMENSIONS です。Timestream トピックルールアクションは、time 列と measure_name および measure_value::* 列を作成し、トピックルールアクションのクエリステートメントの結果からの値を入力します。

device_firmware_sku device_id measure_name measure_value::bigint measure_value::varchar measure_value::double measure_value::boolean time
静的メタデータ iotconsole-159EXAMPLE738-0 complex_value - {"simple_element":42,"array_of_integers":[23,36,56,72],"array of strings":["red","green","blue"]} - - 2020-08-26 22:42:16.423000000
静的メタデータ iotconsole-159EXAMPLE738-0 integer_value_as_string - 123456789012 - - 2020-08-26 22:42:16.423000000
静的メタデータ iotconsole-159EXAMPLE738-0 boolean_value - - - TRUE 2020-08-26 22:42:16.423000000
静的メタデータ iotconsole-159EXAMPLE738-0 integer_value 123456789012 - - - 2020-08-26 22:42:16.423000000
静的メタデータ iotconsole-159EXAMPLE738-0 string_value - 文字列値 - - 2020-08-26 22:42:16.423000000
静的メタデータ iotconsole-159EXAMPLE738-0 array_of_integers - [23,36,56,72] - - 2020-08-26 22:42:16.423000000
静的メタデータ iotconsole-159EXAMPLE738-0 文字列の配列 - ["red","green","blue"] - - 2020-08-26 22:42:16.423000000
静的メタデータ iotconsole-159EXAMPLE738-0 boolean_value_as_string - TRUE - - 2020-08-26 22:42:16.423000000
静的メタデータ iotconsole-159EXAMPLE738-0 double_value - - 123.456789012 - 2020-08-26 22:42:16.423000000
静的メタデータ iotconsole-159EXAMPLE738-0 double_value_as_string - 123.45679 - - 2020-08-26 22:42:16.423000000