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 而不是 temperature 来创建一条记录。

度量的数据类型是根据消息负载值的数据类型推断出来的。JSON整数、双精度、布尔值和字符串等数据类型VARCHAR分别映射到 Timestream 数据类型BIGINTDOUBLE、BOOLEAN、和。也可以使用 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 的文件中。Replace(替换) 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 模板在 READMEAmazon Timestream 和 Io AWS T Core 中创建必要的项目,并向该主题发布示例消息。

视频教程

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