amazon-web-services - AWS 格林格拉斯。无法从本地网络中的设备 mqtt 客户端触发核心的 lambda 函数
问题描述
我想要的greengrass device
是greengrass lambda function
在local 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 访问它,但不确定如何为核心设置端点。
解决方案
我有同样的问题。我试图在 Greengrass 中触发 lambda 函数。如果我创建了一个订阅,其来源是云,目标是 lambda。然后,当我使用我的设备凭据向主题发布消息时,触发了 lambda 函数。
但如果 greengrass 和 AWS 之间的连接丢失,则 lambda 函数不会触发。即使 greengrass 没有与 AWS 连接,我也需要 lambda 函数。
所以我认为如果我将订阅源更改为设备,这个问题可以解决。
但是,如果我创建一个将源设置为设备本身的订阅,那么发布消息不会触发 lambda 函数。虽然我可以从主题中得到消息。
推荐阅读
- python - 桌面上路径的python字符串
- javascript - 输入字段值在一个区域工作而不在另一个区域工作
- typescript - 从导出的 Typescript 命名空间导入接口
- go - 反转二叉树:如何正确交换整个左树和右树
- swift - 如何指定哪个构建目标包含特定的 swift 包依赖项?
- clojure - 十进制转二进制 Clojure
- apache-spark - 任务失败后如何让 PySpark/Databricks 作业继续运行并忽略不良记录
- numpy - CuPy 和 Dirichlet 给了我 TypeError: unsupported operand type(s) for +=: 'int' and 'tuple'
- lua - 如何使用开发产品在 Roblox 中制作持续 30 秒的盾牌?
- node.js - Axios 返回“net::ERR_CERT_AUTHORITY_INVALID”