AWS IoT Core - Amazon Timestream

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

AWS IoT Core

您可以使用 IoT AWS Core 從 IoT 裝置收集資料,並透過 IoT Core 規則動作將資料路由至 Amazon Timestream。 AWS IoT 規則動作會指定觸發規則時應採取的動作。您可以定義將資料傳送至 Amazon Timestream 資料表、Amazon DynamoDB 資料庫,以及叫用 AWS Lambda 函數的動作。

IoT 規則中的 Timestream 動作用於將來自傳入訊息的資料直接插入 Timestream。此動作剖析 IoT Core SQL 陳述式的結果,並將資料存放在 Timestream 中。傳回的 SQL 結果集中的欄位名稱會用作量值::name,而欄位的值是量值::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 規則動作,則兩個記錄會新增至 Timestream,分別具有 24.04 和 43.605 的測量名稱、溫度和濕度以及測量值。

您可以使用 SELECT 陳述式中的 AS 運算子,修改要新增至 Timestream 的記錄的量值名稱。下面的 SQL 陳述式將建立具有訊息名稱臨時而不是溫度的記錄。

測量的資料類型是從訊息承載值的資料類型推斷而來。整數、雙數、布林值和字串等 JSON 資料類型會分別映射至 BIGINT、DOUBLE、BOOLEAN 和 VARCHAR 的 Timestream 資料類型。也可以使用 cast() 函數強制將資料輸入特定資料類型。您可以指定量值的時間戳記。如果時間戳記留空,則會使用處理項目的時間。

如需其他詳細資訊,請參閱 Timestream 規則動作文件

若要建立 IoT Core 規則動作以將資料儲存在 Timestream 中,請依照下列步驟執行:

必要條件

  1. 使用 中所述的指示在 Amazon Timestream 中建立資料庫建立 資料庫

  2. 使用 中所述的指示在 Amazon Timestream 中建立資料表建立資料表

使用主控台

  1. 按一下管理 > 訊息路由 > 規則後接建立規則,使用 AWS 管理主控台的 AWS IoT 核心來建立規則

  2. 將規則名稱設定為您選擇的名稱,並將 SQL 設定為如下所示的文字

    SELECT temperature as temp, humidity from 'iot/topic'
  3. 從動作清單中選取時間串流

  4. 指定 Timestream 資料庫、資料表和維度名稱,以及將資料寫入 Timestream 的角色。如果角色不存在,您可以按一下建立角色來建立角色

  5. 若要測試規則,請遵循此處顯示的指示。

使用 CLI

如果您尚未安裝 AWS 命令列介面 (AWS CLI),請從此處執行此操作。

  1. 將下列規則承載儲存在名為 timestream_rule.json 的 JSON 檔案中。Replace (取代) arn:aws:iam::123456789012:role/TimestreamRole 您的角色 Arn,授予 AWS IoT 存取,以將資料儲存在 Amazon Timestream 中

    { "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 搭配 AWS IoT Core,我們建立了功能齊全的範例應用程式,可在 AWS IoT Core 和 Timestream 中建立必要的成品,以建立主題規則和範例應用程式,以將資料發佈至主題。

  1. 按照 GitHub 的指示複製 AWS IoT Core 整合的範例應用程式的 GitHub 儲存庫

  2. 請遵循 README 中的指示,使用 a AWS CloudFormation 範本在 Amazon Timestream 和 AWS IoT Core 中建立必要的成品,並將範例訊息發佈至主題。

影片教學課程

影片說明 IoT Core 如何與 Timestream 搭配使用。