

如需與 Amazon Timestream for LiveAnalytics 類似的功能，請考慮使用 Amazon Timestream for InfluxDB。它提供簡化的資料擷取和單一位數毫秒查詢回應時間，以進行即時分析。[在這裡](https://docs.aws.amazon.com//timestream/latest/developerguide/timestream-for-influxdb.html)進一步了解。

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

# AWS IoT Core
<a name="IOT-Core"></a>

 您可以使用 IoT [AWS Core 從 IoT ](https://docs.aws.amazon.com/iot/latest/developerguide/iot-gs.html) 裝置收集資料，並透過 IoT Core 規則動作將資料路由至 Amazon Timestream。 AWS IoT 規則動作會指定觸發規則時要執行的動作。您可以定義動作，將資料傳送至 Amazon Timestream 資料表、Amazon DynamoDB 資料庫，並叫用 AWS Lambda 函數。

 IoT 規則中的 Timestream 動作用於將來自傳入訊息的資料直接插入 Timestream。動作會剖析 [IoT Core SQL](https://docs.aws.amazon.com/iot/latest/developerguide/iot-sql-reference.html) 陳述式的結果，並將資料存放在 Timestream 中。傳回的 SQL 結果集中的欄位名稱會做為 measure：：name 使用，而 欄位的值是 measure：：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、DUBLE、BOOLEAN 和 VARCHAR 的 Timestream 資料類型。您也可以使用 [cast()](https://docs.aws.amazon.com/iot/latest/developerguide/iot-sql-functions.html#iot-sql-function-cast) 函數將資料強制為特定資料類型。您可以指定量值的時間戳記。如果時間戳記保留空白，則會使用處理項目的時間。

如需其他詳細資訊，請參閱 [ Timestream 規則動作文件 ](https://docs.aws.amazon.com/iot/latest/developerguide/timestream-rule-action.html) 

 若要建立 IoT Core 規則動作以將資料存放在 Timestream 中，請遵循下列步驟：

**Topics**
+ [先決條件](#prereqs)
+ [使用主控台](#using-console)
+ [使用 CLI](#using-cli)
+ [範例應用程式](#sample-app)
+ [影片教學課程](#video-tutorial)

## 先決條件
<a name="prereqs"></a>

1. 使用中所述的說明在 Amazon Timestream 中建立資料庫[建立 資料庫](console_timestream.md#console_timestream.db.using-console)。

1. 使用中所述的說明在 Amazon Timestream 中建立資料表[建立資料表](console_timestream.md#console_timestream.table.using-console)。

## 使用主控台
<a name="using-console"></a>

1. 使用 AWS 管理主控台 for AWS IoT Core，按一下**管理** > **訊息路由** > **規則**，接著按一下**建立規則來建立規則**。

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

   ```
   SELECT temperature as temp, humidity from 'iot/topic' 
   ```

1. 從動作清單中選取時間串流

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

1. 若要測試規則，請遵循[此處](https://docs.aws.amazon.com/iot/latest/developerguide/iot-ddb-rule.html#test-db-rule)顯示的指示。

## 使用 CLI
<a name="using-cli"></a>

 如果您尚未安裝 AWS 命令列界面 (AWS CLI)，請從[這裡](https://aws.amazon.com/cli/)執行此操作。

1. 將下列規則承載儲存在名為 timestream\$1rule.json 的 JSON 檔案中。將 *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 
   }
   ```

1. 使用下列命令建立主題規則

   ```
   aws iot create-topic-rule --rule-name timestream_test --topic-rule-payload file://<path/to/timestream_rule.json> --region us-east-1 
   ```

1. 使用下列命令擷取主題規則的詳細資訊

   ```
   aws iot get-topic-rule --rule-name timestream_test 
   ```

1. 將下列訊息承載儲存在名為 timestream\$1msg.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   
   }
   ```

1. 使用下列命令測試規則

   ```
   aws iot-data publish --topic 'iot/topic' --payload file://<path/to/timestream_msg.json>
   ```

## 範例應用程式
<a name="sample-app"></a>

 為了協助您開始使用 Timestream with AWS IoT Core，我們建立了功能完整的範例應用程式，可在 AWS IoT Core 和 Timestream 中建立必要的成品，以建立主題規則和範例應用程式，以將資料發佈至主題。

1.  依照 GitHub 的指示複製適用於 AWS IoT Core 整合[的範例應用程式的](https://github.com/awslabs/amazon-timestream-tools/blob/master/integrations/iot_core) [GitHub](https://docs.github.com/en/free-pro-team@latest/github/creating-cloning-and-archiving-repositories/cloning-a-repository) 儲存庫

1. 請遵循 [README](https://github.com/awslabs/amazon-timestream-tools/blob/master/integrations/iot_core) 中的指示，使用 an AWS CloudFormation 範本在 Amazon Timestream 和 AWS IoT Core 中建立必要的成品，並將範例訊息發佈至主題。

## 影片教學課程
<a name="video-tutorial"></a>

本[影片](https://youtu.be/00Wersoz2Q4)說明 IoT Core 如何與 Timestream 搭配使用。