将数据提取到 Amazon IoT Analytics - Amazon IoT Analytics
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

将数据提取到 Amazon IoT Analytics

如果您有一个将数据路由到管道的通道,该管道将数据存储在数据存储以在其中对其进行查询,则可以将消息数据发送到。Amazon IoT Analytics. 此处,我们介绍了两种获取数据的方法。Amazon IoT Analytics. 你可以使用Amazon IoT消息代理或使用Amazon IoT Analytics BatchPutMessageAPI。

使用Amazon IoT消息代理

使用Amazon IoT消息代理,请使用Amazon IoT规则引擎。该规则将具有特定主题的消息路由到Amazon IoT Analytics. 但首先,该规则要求您创建一个角色以授予所需的权限。

创建 IAM 角色

要拥有Amazon IoT发送到Amazon IoT Analytics频道,你设置了一条规则。但首先,您必须创建一个 IAM 角色,以便为该规则授予权限以将消息数据发送到Amazon IoT Analytics通道。

运行以下 命令以创建角色。

aws iam create-role --role-name myAnalyticsRole --assume-role-policy-document file://arpd.json

的内容arpd.json文件应类似以下内容。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "iot.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

然后,将策略文档附加到该角色。

aws iam put-role-policy --role-name myAnalyticsRole --policy-name myAnalyticsPolicy --policy-document file://pd.json

的内容pd.json文件应类似以下内容。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iotanalytics:BatchPutMessage", "Resource": [ "arn:aws:iotanalytics:us-west-2:your-account-number:channel/mychannel" ] } ] }

创建Amazon IoT规则

创建Amazon IoT将消息发送到您的通道的规则。

aws iot create-topic-rule --rule-name analyticsTestRule --topic-rule-payload file://rule.json

的内容rule.json文件应类似以下内容。

{ "sql": "SELECT * FROM 'iot/test'", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [ { "iotAnalytics": { "channelName": "mychannel", "roleArn": "arn:aws:iam::your-account-number:role/myAnalyticsRole" } } ] }

iot/test 替换为应路由的消息的 MQTT 主题。将通道名称和角色替换为您在前面章节中创建的通道和角色。

将 MQTT 消息发送到Amazon IoT Analytics

在将规则加入通道、将通道加入管道并将管道加入数据存储后,与规则匹配的任何数据现在通过。Amazon IoT Analytics转到数据存储以供查询。要测试此内容,您可以使用Amazon IoT发送邮件的控制台。

注意

您发送到的消息负载(数据)的字段名称:Amazon IoT Analytics.

  • 必须仅包含字母数字字符和下划线 (_);不允许使用其他特殊字符。

  • 必须以字母字符或单个下划线 (_) 开头。

  • 不能包含连字符 (-)。

  • 正则表达式术语:”^[A-Za-z_]([A-Za-z0-9]*|[A-Za-z0-9][A-Za-z0-9_]*)$“。

  • 长度不能超过 255 个字符

  • 不区分大小写。命名字段fooFOO在同一负载中被认为是重复的。

例如,在消息负载中,{"temp_01": 29}{"_temp_01": 29} 有效,但 {"temp-01": 29}{"01_temp": 29}{"__temp_01": 29} 无效。

  1. Amazon IoT 控制台的左侧导航窗格中选择 Test (测试)

    
                                “监控” 页面的屏幕截图Amazon IoT控制台。
  2. 在 MQTT 客户端页面上,在 Publish 部分的 Specify a topic 中,键入 iot/test。在消息负载部分,请验证以下 JSON 内容是否存在,如果不存在,则键入它们。

    { "message": "Hello from the IoT console" }
  3. 选择 Publish to topic(发布到主题)

    
                                “测试” 页面的屏幕截图Amazon IoT控制台。

    这会发布一条消息,该消息路由到您之前创建的数据存储。

使用 BatchPutMessage API

将消息数据输入的另一种方法Amazon IoT Analytics是使用BatchPutMessageAPI 命令。此方法不要求您设置Amazon IoT将具有特定主题的消息路由到您的通道。但它确实要求将数据/消息发送到通道的设备能够运行使用AmazonSDK 或能够使用Amazon CLI调用BatchPutMessage.

  1. 创建文件messages.json,其中包含要发送的消息(在本示例中,只发送一条消息)。

    [ { "messageId": "message01", "payload": "{ \"message\": \"Hello from the CLI\" }" } ]
  2. 运行 batch-put-message 命令。

    aws iotanalytics batch-put-message --channel-name mychannel --messages file://messages.json

    如果没有错误,将显示以下输出。

    { "batchPutMessageErrorEntries": [] }