AWS IoT Core - Amazon Timestream

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

AWS IoT Core

您可以使用物联网核心从物联网设备收集数据,并通过AWS 物联网核心规则操作将数据路由到 Amazon Timestream。 AWS IoT 规则操作指定触发规则时要执行的操作。您可以定义将数据发送到亚马逊 Timestream 表、亚马逊 DynamoDB 数据库和调用 Lambda 函数的操作。 AWS

物联网规则中的 Timestream 操作用于将来自传入消息的数据直接插入到 Timestream 中。该操作解析物联网核心 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 的物联网核心规则操作,则将向 Timestream 中添加两条记录,其测量名称分别为 24.04 和 43.605,测量值分别为 24.04 和 43.605。

您可以在 SELECT 语句中使用 AS 运算符修改要添加到 Timestream 的记录的度量名称。下面的 SQL 语句将使用消息名为 temp 而不是温度来创建记录。

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

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

要创建物联网核心规则操作以将数据存储在 Timestream 中,请执行以下步骤:

先决条件

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

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

使用 控制台

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

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

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

  4. 指定 Timestream 数据库、表和维度名称以及将数据写入 Timestream 的角色。如果该角色不存在,则可以通过单击 “创建角色” 来创建一个角色

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

使用 CLI

如果您尚未安装 AWS 命令行界面 (AWS CLI),请从此安装。

  1. 将以下规则负载保存在名为 timestream_rule.json 的 JSON 文件中。arn:aws:iam::123456789012:role/TimestreamRole替换为你的角色 arn,它授予 AWS 物联网访问权限,以便在 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>

示例应用程序

为了帮助您开始使用带有 AWS IoT Core 的 Timestream,我们创建了一个功能齐全的示例应用程序,它在 AWS IoT Core 和 Timestream 中创建了用于创建主题规则的必要工件,以及用于向主题发布数据的示例应用程序。

  1. 按照中的说明克隆示例应用程序的 GitHub 存储库,以 AWS 实现 IoT Core 集成 GitHub

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

视频教程

视频解释了物联网核心如何与 Timestream 配合使用。