翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
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インスタンスの名前とアベイラビリティーゾーン、または風力タービンの製造元の名前はディメンションです。
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 |
Timestream ルールアクションエントリで指定された値。 |
ルールアクションエントリで指定された各 [Dimension] (ディメンション) は、ディメンションの名前で Timestream データベースに列を作成します。 |
measure_name |
MEASURE_NAME |
属性の名前 |
|
measure_value:: |
MEASURE_VALUE |
クエリステートメントの結果に含まれる属性の値。属性の名前は |
値は解釈*され、次に対する最適なマッチとしてキャストされます: |
時間 |
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 |