首页 > 解决方案 > AWS 格林格拉斯。无法从本地网络中的设备 mqtt 客户端触发核心的 lambda 函数

问题描述

我想要的greengrass devicegreengrass lambda functionlocal network.

我正在使用basicDiscovery.py的订阅模式将一些设备指标发送到 amazon greengrass 核心设备,并调用部署在核心上的 lambda 函数。lambda 函数只是打印事件。我的困惑是,当我使用它的订阅时IoT Cloud -> lambda function它工作正常,但是当我从device -> lambda function.
此外,当我将设备与 Internet 断开连接时(在情况 1 中),它会缓冲消息并在再次连接到 Internet 时发送它们。我知道我xxxxxxx.iot.us-west-2.amazonaws.com作为端点传递并且可以通过 Internet 访问它,但不确定如何为核心设置端点。

标签: amazon-web-servicesaws-lambdaiotaws-iotgreengrass

解决方案


我有同样的问题。我试图在 Greengrass 中触发 lambda 函数。如果我创建了一个订阅,其来源是云,目标是 lambda。然后,当我使用我的设备凭据向主题发布消息时,触发了 lambda 函数。

但如果 greengrass 和 AWS 之间的连接丢失,则 lambda 函数不会触发。即使 greengrass 没有与 AWS 连接,我也需要 lambda 函数。

所以我认为如果我将订阅源更改为设备,这个问题可以解决。

但是,如果我创建一个将源设置为设备本身的订阅,那么发布消息不会触发 lambda 函数。虽然我可以从主题中得到消息。


推荐阅读