

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

# Timestream
<a name="timestream-rule-action"></a>

Timestream ルールアクションは、MQTT メッセージの属性 (メジャー) を Amazon Timestream テーブルに書き込みます。Amazon Timestream の詳細については、[Amazon Timestream とは](https://docs.aws.amazon.com/timestream/latest/developerguide/what-is-timestream.html)を参照してください。

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

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

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

**注記**  
タイムストリームルールアクションが Amazon Timestream テーブルに書き込むことができる値の最大数は 100 です。詳細については、[Amazon Timestream クォータのリファレンス](https://docs.aws.amazon.com//timestream/latest/developerguide/ts-limits.html#limits.default)を参照してください。

## 要件
<a name="timestream-rule-action-requirements"></a>

このルールアクションには、以下の要件があります。
+ が `timestream:DescribeEndpoints`および `timestream:WriteRecords`オペレーションを実行するために引き受け AWS IoT ることができる IAM ロール。詳細については、「[必要なアクセスを AWS IoT ルールに付与する](iot-create-role.md)」を参照してください。

   AWS IoT コンソールでは、このルールアクションを実行 AWS IoT することを に許可するロールを選択、更新、または作成できます。
+ Timestream で顧客 AWS KMS を使用して保管中のデータを暗号化する場合、サービスには AWS KMS key 発信者に代わって を使用するアクセス許可が必要です。詳細については、「 [AWS サービスが KMS AWS を使用する方法](https://docs.aws.amazon.com/kms/latest/developerguide/service-integration.html)」を参照してください。

## パラメータ
<a name="timestream-rule-action-parameters"></a>

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

`databaseName`  
このアクションが作成したレコードを受信するテーブルを持つ Amazon Timestream データベースの名前。「`tableName`」も参照してください。  
[置換テンプレート](iot-substitution-templates.md)をサポート: API および AWS CLI のみ

`dimensions`  
各メジャーレコードに書き込まれる時系列のメタデータ属性。例えば、EC2 インスタンスの名前とアベイラビリティーゾーン、または風力タービンの製造元の名前はディメンションです。    
`name`  
メタデータディメンション名。これはデータベーステーブルレコード内の列の名前です。  
ディメンションに、`measure_name`、`measure_value`、`time` の名前を付けることはできません。これらの名前は予約されています。ディメンション名は、`ts_` または `measure_value` で始めることはできず、コロン (`:`) 文字を含めることはできません。  
[置換テンプレート](iot-substitution-templates.md)をサポート: いいえ  
`value`  
データベースレコードのこの列に書き込む値。  
[置換テンプレート](iot-substitution-templates.md)をサポート: はい

`roleArn`  
Timestream データベーステーブルに書き込むためのアクセス許可を AWS IoT に付与するロールの Amazon リソースネーム (ARN)。詳細については、「[要件](#timestream-rule-action-requirements)」を参照してください。  
[置換テンプレート](iot-substitution-templates.md)をサポート: いいえ

`tableName`  
メジャーレコードを書き込むデータベーステーブルの名前。「`databaseName`」も参照してください。  
[置換テンプレート](iot-substitution-templates.md)をサポート: API および AWS CLI のみ

`timestamp`  
 エントリのタイムスタンプに使用する値。空白の場合、エントリが処理された時刻が使用されます。    
`unit`  
`value` で説明されている式から得られるタイムスタンプ値の精度。  
有効な値: `SECONDS` \$1 `MILLISECONDS` \$1 `MICROSECONDS` \$1 `NANOSECONDS`。デフォルトは`MILLISECONDS`です。  
`value`  
長いエポック時間の値を返す式。  
[time\$1to\$1epoch(String, String)](iot-sql-functions.md#iot-sql-function-time-to-epoch) 関数を使用して、メッセージペイロードで渡される日付または時刻の値から有効なタイムスタンプを作成できます。

## Timestream レコードコンテンツ
<a name="timestream-rule-action-data"></a>

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

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


|  列名  |  属性タイプ  |  値  |  コメント  | 
| --- | --- | --- | --- | 
|  *dimension-name*  |  ディメンション  |  Timestream ルールアクションエントリで指定された値。  |  ルールアクションエントリで指定された各 [**Dimension**] (ディメンション) は、ディメンションの名前で Timestream データベースに列を作成します。  | 
|  measure\$1name  |  MEASURE\$1NAME  |  属性の名前  |  `measure_value::data-type` 列で値が指定されているクエリステートメントの結果の属性の名前。  | 
|  measure\$1value::*data-type*  |  MEASURE\$1VALUE  |  クエリステートメントの結果に含まれる属性の値。属性の名前は `measure_name` 列にあります。  |  値は解釈\$1され、次に対する最適なマッチとしてキャストされます: `bigint`、`boolean`、`double`、`varchar`。Amazon Timestream は、データ型ごとに個別の列を作成します。メッセージ内の値は、ルールのクエリステートメントで[`cast()`](iot-sql-functions.md#iot-sql-function-cast) 関数を使用して別のデータ型にキャストできます。  | 
|  time  |  TIMESTAMP  |  データベース内のレコードの日時。  |  この値は、ルールエンジンまたは `timestamp` プロパティ (定義されている場合) によって割り当てられます。  | 

\$1 メッセージペイロードから読み取られた属性値は以下のように解釈されます。これらの各ケースの図については、「[例](#timestream-rule-action-examples)」を参照してください。
+ `true` または `false` の引用符で囲まれていない値は、`boolean` タイプとして解釈されます。
+ 10 進数値は `double` タイプとして解釈されます。
+ 小数点のない数値は `bigint` タイプとして解釈されます。
+ 引用符で囲まれた文字列は `varchar` タイプとして解釈されます。
+ オブジェクトと配列の値は JSON 文字列に変換され、`varchar` タイプとして保存されます。

## 例
<a name="timestream-rule-action-examples"></a>

次の 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\$1firmware\$1sku | device\$1id | measure\$1name | measure\$1value::bigint | measure\$1value::varchar | measure\$1value::double | measure\$1value::boolean | time | 
| --- | --- | --- | --- | --- | --- | --- | --- | 
| 静的メタデータ | iotconsole-159EXAMPLE738-0 | complex\$1value | - | \$1"simple\$1element":42,"array\$1of\$1integers":[23,36,56,72],"array of strings":["red","green","blue"]\$1 | - | - | 2020-08-26 22:42:16.423000000 | 
| 静的メタデータ | iotconsole-159EXAMPLE738-0 | integer\$1value\$1as\$1string | - | 123456789012 | - | - | 2020-08-26 22:42:16.423000000 | 
| 静的メタデータ | iotconsole-159EXAMPLE738-0 | boolean\$1value | - | - | - | TRUE | 2020-08-26 22:42:16.423000000 | 
| 静的メタデータ | iotconsole-159EXAMPLE738-0 | integer\$1value | 123456789012 | - | - | - | 2020-08-26 22:42:16.423000000 | 
| 静的メタデータ | iotconsole-159EXAMPLE738-0 | string\$1value | - | 文字列値 | - | - | 2020-08-26 22:42:16.423000000 | 
| 静的メタデータ | iotconsole-159EXAMPLE738-0 | array\$1of\$1integers | - | [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\$1value\$1as\$1string | - | TRUE | - | - | 2020-08-26 22:42:16.423000000 | 
| 静的メタデータ | iotconsole-159EXAMPLE738-0 | double\$1value | - | - | 123.456789012 | - | 2020-08-26 22:42:16.423000000 | 
| 静的メタデータ | iotconsole-159EXAMPLE738-0 | double\$1value\$1as\$1string | - | 123.45679 | - | - | 2020-08-26 22:42:16.423000000 | 