本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Timestream
Timestream 規則動作將屬性 (測量) 從 MQTT 訊息寫入 Amazon Timestream 表格中。如需 Amazon Timestream 的詳細資訊,請參閱什麼是 Amazon Timestream?。
注意
Amazon Timestream 並不是在所有 AWS 區域 s 可用. 若 Amazon Timestream 無法在您的區域中使用,則不會顯示於規則動作清單中。
此規則儲存於 Timestream 資料庫中的屬性是規則查詢陳述式所產生的屬性。剖析查詢陳述式結果中每個屬性值,以推斷其資料類型 (如 DynamoDBv2 動作中所示)。每個屬性值都會寫入其在 Timestream 表格中的記錄。如要指定或變更屬性的資料類型,請使用查詢陳述式中的 cast() 函數。如需每個 Timestream 記錄內容的詳細資訊,請參閱 Timestream 記錄內容。
注意
在 SQL V2 (2016-03-23) 中,作為完整數的數值,例如 10.0
,將轉換為其整數表示形式 (10
)。將其明確轉換為 Decimal
值,例如使用 cast() 函數不能阻止此種行為,結果仍是一個 Integer
值。這可能會造成類型不相符的錯誤,導致資料無法記錄於 Timestream 資料庫中。若要將整數數值當成 Decimal
值處理,請針對規則查詢陳述式使用 SQL V1 (2015-10-08)。
注意
可以寫入 Amazon Timestream 表格的最大 Timestream 規則動作值為 100。如需詳細資訊,請參閱 Amazon Timestream 配額參考。
要求
此規則動作具有下列需求:
-
AWS IoT 可假設執行
timestream:DescribeEndpoints
和timestream:WriteRecords
作業的 IAM 角色。如需詳細資訊,請參閱 授與 AWS IoT 規則所需的存取權。在 AWS IoT 主控台中,您可以選擇、更新或建立角色,以 AWS IoT 允許執行此規則動作。
-
如果您使用客戶 AWS KMS 來加密 Timestream 中的靜態資料,則該服務必須具有代表呼叫者使用的權限。 AWS KMS key 如需詳細資訊,請參閱AWS 服務如何使用 AWS KMS。
參數
使用此動作建立 AWS IoT 規則時,必須指定下列資訊:
databaseName
-
Amazon Timestream 資料庫的名稱,其中包含用於接收此動作所建立之記錄的資料表。另請參閱
tableName
。支援替代範本:API 且 AWS CLI 僅支援
dimensions
-
寫入每個量測記錄的時間序列的中繼資料屬性。例如,EC2 執行個體的名稱和可用區域,或風力發電機製造商的名稱即為維度。
roleArn
-
授予 AWS IoT 許可之角色的 Amazon 資源名稱 (ARN),可寫入 Timestream 資料庫表格。如需詳細資訊,請參閱 要求。
支援替代範本:否
tableName
-
要寫入測量記錄的資料庫表格名稱。另請參閱
databaseName
。支援替代範本:API 且 AWS CLI 僅支援
timestamp
-
要用於項目的 timestamp 的值。若為空白,則會使用處理項目的時間。
unit
-
value
中所述運算式產生的 timestamp 值的精確度。有效值:
SECONDS
|MILLISECONDS
|MICROSECONDS
|NANOSECONDS
。預設值為MILLISECONDS
。 value
-
傳回一個很長的 Epoch 時間值的表達式。
您可使用 time_to_epoch(String, String) 函數,從訊息承載中傳遞的日期或時間建立有效的時間戳記。
Timestream 記錄內容
此動作寫入 Amazon Timestream 表格的資料包括時間戳記、來自 Timestream 規則動作的中繼資料,及規則查詢陳述式的結果。
對於查詢陳述式結果中的每個屬性 (測量),此規則動作會將記錄寫入具有這些欄的指定 Timestream 表格。
欄名稱 |
屬性類型 |
Value |
說明 |
---|---|---|---|
|
DIMENSION |
指定於 Timestream 規則動作項目中的值。 |
指定於規則動作項目中的每個維度都會於 Timestream 資料庫中建立一個具維度名稱的欄。 |
measure_name |
MEASURE_NAME |
屬性名稱 |
查詢陳述式結果中的屬性名稱,其值指定於 |
measure_value:: |
MEASURE_VALUE |
查詢陳述式結果中的屬性值。屬性名稱位於 |
此值會進行解譯* 並轉換為最適合下列的比對項目: |
time |
TIMESTAMP |
資料庫中記錄的日期和時間。 |
此值是由規則引擎或 |
* 從訊息承載讀取的屬性值解譯如下。請參閱 範例,以取得每個案例的說明。
-
將
true
或false
的未加引號值解釋為boolean
類型。 -
將十進位數字解釋為
double
類型。 -
將未帶小數點的十進位數值解釋為
bigint
類型。 -
將帶引號的字串解釋為
varchar
類型。 -
將物件和陣列數值轉換為 JSON 字串並儲存為
varchar
類型。
範例
下列 JSON 範例會使用規則中的替代範本定義時間串流 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],"字串陣列":["紅","綠","藍"]} | - | - | 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 | 字串陣列 | - | ["紅","綠","藍"] | - | - | 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 |