AWS IoT
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

基本摄取

借助基本摄取,您能够安全地将设备数据发送到 AWS IoT 规则操作所支持的 AWS 服务,而不会产生消息收发成本。基本摄取通过从摄取路径中删除发布/订阅消息代理来优化数据流,因此它更具成本效益。

要使用基本摄取,请从您的设备或应用程序发送主题名称以 $aws/rules/rule-name 作为其前三个级别开头的消息,其中 rule-name 是要触发的 AWS IoT 规则的名称。

对于基本摄取,您可以使用现有规则,只需将基本摄取前缀 ($aws/rules/rule-name) 添加到正常触发该规则所依据的消息主题。例如,如果您有一个由主题类似于 Buildings/Building5/Floor2/Room201/Lights ("sql": "SELECT * FROM 'Buildings/#'") 的消息触发的名为 BuildingManager 的规则,则可以通过发送主题为 $aws/rules/BuildingManager/Buildings/Building5/Floor2/Room201/Lights 的消息来使用基本摄取触发相同规则。

请注意:

  • 您的设备和规则无法订阅基本摄取保留主题。有关更多信息,请参阅 预留的主题

  • 如果您需要发布/订阅代理来将消息分配给多个订阅者(例如,将消息传送到其他设备以及规则引擎),则应继续使用 AWS IoT 消息代理来处理消息分配。只需在基本摄取主题以外的主题上发布您的消息。

使用基本摄取

请确保您的设备或应用程序使用对 $aws/rules/* 具有发布权限的策略。您也可以为策略中具有 $aws/rules/rule-name/* 的各个规则指定权限。否则,您的设备和应用程序可以继续使用与 AWS IoT Core 的现有连接。

当消息到达规则引擎时,从基本摄取触发的规则与通过消息代理订阅触发的规则之间的执行或错误处理没有任何区别。

当然,您可以创建规则以用于基本摄取。记住以下内容:

  • 基本摄取主题的初始前缀 ($aws/rules/rule-name) 不可用于 topic(Decimal) 函数。

  • 如果您定义的规则仅通过基本摄取来触发,则 FROM 子句在 rule 定义的 sql 字段中是可选的。如果规则还由必须通过消息代理发送的其他消息来触发(例如,因为这些其他消息必须分配给多个订阅者),则它仍是必需的。有关更多信息,请参阅 AWS IoT SQL 参考

  • 基本摄取主题的前三个级别 ($aws/rules/rule-name) 不计入 8 个分段长度限制或主题的 256 个总字符限制。否则,应用 AWS IoT 限制中记录的相同限制。

  • 如果所收到消息的基本摄取主题指定了非活动规则或不存在的规则,则会在 Amazon CloudWatch 日志中创建错误日志来帮助您进行调试。有关更多信息,请参阅 规则引擎日志。将指示 RuleNotFound 指标,您可以在该指标上创建警报。有关更多信息,请参阅 AWS IoT 指标中的“规则指标”。

  • 您仍可以使用 QoS 1 在基本摄取主题上发布。在消息成功传送到规则引擎后,您会收到 PUBACK。收到 PUBACK 并不意味着您的规则操作成功完成。您可以配置错误操作以在操作执行期间处理错误。请参阅错误处理(错误操作)

本页内容: