AWS格林格拉斯。无法从本地网络中的设备 MQTT 客户端触发内核的 lambda 函数



我想要的是在local network中将一些度量从greengrass device发送到greengrass lambda function

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

我尝试过将数据从设备发送到lambda,并将lambda发送到云。根据我的理解,你必须注意以下几点:1.连接到greengrass的设备应该发布某个主题的数据2.对于同一主题,必须在设备和lambda之间创建订阅3.要测试这种行为,请在lambda和云之间创建另一个订阅

参考:https://medium.com/tensoriot/aws-greengrass-on-raspberry-pi-creating-core-and-node-devices-707a38452293

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

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

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

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

最新更新