借助基本摄取功能,降低消息收发成本 - Amazon IoT Core
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

借助基本摄取功能,降低消息收发成本

您可以使用 Basic Ingest 将设备数据安全地发送给 Amazon Web Services 服务 支持者Amazon IoT 规则动作,而不会产生消息收发费用。Basic Ingest 通过从摄取路径中移除 publish/subscribe 消息代理来优化数据流。

基本摄取功能可以从设备或应用程序发送消息。这些消息的主题名称以 $aws/rules/rule_name 开头(表示其前三个级别),其中 rule_name 是您要调用的 Amazon IoT 规则的名称。

您可以借助基本摄取功能来使用现有规则,方法为将基本摄取前缀($aws/rules/rule_name)添加到您用于调用规则的消息主题。例如,如果您有名为 BuildingManager 的规则且它由主题类似于 Buildings/Building5/Floor2/Room201/Lights"sql": "SELECT * FROM 'Buildings/#'")的消息调用,那么通过发送主题为 $aws/rules/BuildingManager/Buildings/Building5/Floor2/Room201/Lights 的消息,您就可以使用基本摄取功能调用相同规则。

注意
  • 您的设备和规则无法订阅基本摄取预留主题。例如,不 Amazon IoT Device Defender 发布num-messages-received指标指标,因为它不支持订阅主题。有关更多信息,请参阅 保留的主题

  • 如果您需要 publish/subscribe 代理向多个订阅者分发消息(例如,将消息传送到其他设备和规则引擎),则应继续使用 Amazon IoT 消息代理来处理消息分发。但是,请确保在基本摄取主题以外的主题上发布您的消息。

使用基本摄取功能

使用基本摄取功能之前,请验证您的设备或应用程序正在使用对 $aws/rules/* 具有发布权限的策略。您也可以为策略中具有 $aws/rules/rule_name/* 的各个规则指定权限。否则,您的设备和应用程序可以继续使用与 Amazon IoT Core的现有连接。

当消息到达规则引擎时,从基本摄取功能调用的规则与通过消息代理订阅调用的规则之间的实现或错误处理没有任何区别。

您可以创建与基本摄取搭配使用的规则。记住以下内容:

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

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

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

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

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