Amazon IoT Core - Amazon Timestream
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

要获得与亚马逊 Timestream 类似的功能 LiveAnalytics,可以考虑适用于 InfluxDB 的亚马逊 Timestream。适用于 InfluxDB 的 Amazon Timestream 提供简化的数据摄取和个位数毫秒级的查询响应时间,以实现实时分析。点击此处了解更多信息。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Amazon IoT Core

可使用 Amazon IoT Core 从 IoT 设备收集数据,并通过 IoT Core 规则操作将数据路由到 Amazon Timestream。AmazonIoT 规则操作将指定规则触发后应执行的操作。可以定义将数据发送到 Amazon Timestream 表、Amazon DynamoDB 数据库以及调用 Amazon Lambda 函数的操作。

IoT 规则中的 Timestream 操作用于将传入消息的数据直接插入到 Timestream 中。该操作解析 IoT Core SQL 语句的结果,并将数据存储在 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 语句将使用消息名称 temp 而非 temperature 创建记录。

度量的数据类型根据消息有效载荷值的数据类型推断得出。整数、双精度、布尔值和字符串等 JSON 数据类型分别映射到 BIGINT、DOUBLE、BOOLEAN 和 VARCHAR 等 Timestream 数据类型。也可使用 cast() 函数将数据强制转换为特定的数据类型。您可以指定该度量的时间戳。如果时间戳为空,则使用处理条目的时间。

如需了解更多详细信息,可以参阅 Timestream 规则操作文档

要创建 IoT Core 规则操作以将数据存储在 Timestream 中,请执行以下步骤:

先决条件

  1. 按照 创建数据库 中所述的说明在 Amazon Timestream 中创建数据库。

  2. 按照 创建表 中所述的说明在 Amazon Timestream 中创建表。

使用控制台

  1. 使用适用于 Amazon IoT Core 的 Amazon 管理控制台创建规则,方法是点击管理 > 消息路由 > 规则,然后点击创建规则

  2. 将规则名称设置为您选择的名称,并将 SQL 设置为如下所示的文本

    SELECT temperature as temp, humidity from 'iot/topic'
  3. 从“操作”列表中选择 Timestream

  4. 指定 Timestream 数据库、表和维度名称以及用于将数据写入 Timestream 的角色。如果该角色不存在,可点击“创建角色”进行创建

  5. 要测试规则,则按照此处所示说明进行操作。

使用 CLI

如果您尚未安装 Amazon 命令行界面(Amazon CLI),请由此处进行安装。

  1. 将以下规则有效载荷保存到名为 timestream_rule.json 的 JSON 文件中。将 arn:aws:iam::123456789012:role/TimestreamRole 替换为角色 ARN,该角色 ARN 授予 Amazon 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 与 Amazon IoT Core,我们已创建功能齐全的示例应用程序,该应用程序在 Amazon IoT Core 和 Timestream 中创建用于创建主题规则的必要组件,以及创建用于向主题发布数据的示例应用程序。

  1. 按照 GitHub 中的说明克隆 GitHub 存储库,该存储库用于 Amazon IoT Core 集成的示例应用程序

  2. 按照自述文件中的说明,使用 Amazon CloudFormation 模板在 Amazon Timestream 和 Amazon IoT Core 中创建必要组件,并向该主题发布示例消息。

教程视频

视频介绍 IoT Core 如何与 Timestream 结合使用。