本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
借助基本摄取功能,降低消息收发成本
您可以使用基本摄取功能,将设备数据安全地发送到 AWS IoT 规则操作所支持的 AWS 服务,而不会产生消息收发成本
基本摄取功能可以从设备或应用程序发送消息。这些消息的主题名称以 $aws/rules/
开头(表示其前三个级别),其中 rule_name
是您要调用的 AWS IoT 规则的名称。rule_name
您可以借助基本摄取功能来使用现有规则,方法为将基本摄取前缀($aws/rules/
)添加到您用于调用规则的消息主题。例如,如果您有名为 rule_name
BuildingManager
的规则且它由主题类似于 Buildings/Building5/Floor2/Room201/Lights
("sql": "SELECT * FROM
'Buildings/#'"
)的消息调用,那么通过发送主题为 $aws/rules/BuildingManager/Buildings/Building5/Floor2/Room201/Lights
的消息,您就可以使用基本摄取功能调用相同规则。
注意
-
您的设备和规则无法订阅基本摄取预留主题。例如,不发出 AWS IoT Device Defender 指标
num-messages-received
指标,因为它不支持订阅主题。有关更多信息,请参阅 保留的主题。 -
如果您需要发布/订阅代理来将消息分配给多个订阅者(例如,将消息传送到其它设备以及规则引擎),则应继续使用 AWS IoT 消息代理来处理消息分配。但是,请确保在基本摄取主题以外的主题上发布您的消息。
使用基本摄取功能
使用基本摄取功能之前,请验证您的设备或应用程序正在使用对 $aws/rules/*
具有发布权限的策略。您也可以为策略中具有 $aws/rules/
的各个规则指定权限。否则,您的设备和应用程序可以继续使用与 AWS IoT Core 的现有连接。rule_name
/*
当消息到达规则引擎时,从基本摄取功能调用的规则与通过消息代理订阅调用的规则之间的实现或错误处理没有任何区别。
您可以创建与基本摄取搭配使用的规则。记住以下内容:
-
基本摄取主题的初始前缀 (
$aws/rules/
) 不可用于 topic(Decimal) 函数。rule_name
-
如果您定义的规则仅通过基本摄取功能来调用,则
FROM
子句在rule
定义的sql
字段中是可选的。如果规则还由必须通过消息代理发送的其他消息来调用(例如,因为这些其他消息必须分配给多个订阅者),则其仍是必要项目。有关更多信息,请参阅 AWS IoT SQL 参考。 -
基本摄取主题的前三个级别 (
$aws/rules/
) 不计入 8 个分段长度限制或针对主题的 256 个总字符限制。否则,应用 AWS IoT 限制中记录的相同限制。rule_name
-
如果所收到消息的 Basic Ingest 主题指定了非活动或不存在的规则,则会在 Amazon CloudWatch 日志中创建错误日志来帮助您进行调试。有关更多信息,请参阅 规则引擎日志条目。将指示
RuleNotFound
指标,您可以在该指标上创建警报。有关更多信息,请参阅规则指标中的“规则指标”。 -
您仍可以使用 QoS 1 在基本摄取主题上进行发布。在消息成功传送到规则引擎后,您会收到 PUBACK。收到 PUBACK 并不意味着您的规则操作成功完成。您可以配置错误操作以在操作运行期间处理错误。有关更多信息,请参阅 错误处理(错误操作)。