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

将数据提取到 AWS IoT Analytics

如果您有一个将数据路由到将数据存储在可查询的数据仓库中的数据的管道的通道,那么您就可以将消息数据发送到 AWS IoT Analytics. 我们在这里展示两种数据进入 AWS IoT Analytics. 您可以使用 AWS IoT 信息代理或使用 AWS IoT Analytics BatchPutMessage API。

使用 AWS IoT 消息代理

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

创建 IAM 角色

要拥有 AWS IoT 留言被发送至 AWS IoT Analytics 信道,您设置了一个规则。但首先,您必须创建一个IAM角色,授予该规则将消息数据发送到 AWS 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" ] } ] }

创建 AWS IoT 规则

创建 AWS 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消息至 AWS IoT Analytics

在将规则加入通道、渠道和渠道到数据仓库之后,任何匹配规则的数据现在都会通过 AWS IoT Analytics 到数据仓库,准备被查询。要测试这一点,您可以使用 AWS IoT 控制台发送消息。

注意

您发送到的消息有效负载(数据)的字段名称 AWS 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. AWS IoT 控制台的左侧导航窗格中选择 Test (测试)

    
                                屏幕快照中的“监控”页面 AWS IoT 控制台。
  2. 在MQTT客户端页面上,在 发布 截面, 指定主题,类型 iot/test。在消息有效负载部分中,验证是否存在以下JSON内容,如果不存在,则键入它们。

    { "message": "Hello from AWS IoT console" }
  3. 选择 Publish to topic

    
                                屏幕快照中“测试”页面 AWS IoT 控制台。

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

使用BatchPutMessageAPI

将消息数据 AWS IoT Analytics 是使用 BatchPutMessage API命令。此方法不要求您设置 AWS IoT 将具有特定主题的邮件路由到信道的规则。但是,它确实要求将数据/消息发送到信道的设备能够运行通过 AWS SDK或能够使用 AWS 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": [] }