AWS 运行 Lambda 从物联网主题中读取

AWS running Lambda read from IOT topic

我有一个 AWS Lambda 将数据发布到 AWS IOT 主题 A 并等待结果,结果将发布到不同的主题 B。

我想知道当它发布到已经 运行 的 lambda 时如何从主题 B 获取这些数据。

对于特定主题 https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/iot-data.html#id4

,我找不到与 get_thing_shadow 等效的内容

例如:

Lambda1 -> 物联网主题 A -> 事物

Lambda1 正在等待

事物 -> 物联网主题 B

Lambda1 从主题 B 读取并更新说 DB 并终止。

我想知道如何做到这一点。

由于某些原因,我们无法再使用 IOT Shadow。

当前架构:

Lambda1 -> 所需的 IOT 影子 -> 事物

Lambda1 -> 等待 5 秒

Lambda1 -> 读取 IOT Shadow Reported -> 成功或失败

如果 Lambda1 失败 -> 将 IOT Desired 重置为旧状态 -> 存在

无法将 IoT 配置为将新消息发送到 "already running" Lambda。它将始终触发 Lambda 函数的新调用。之前的状态不是已经在 IoT Shadow Update Failed 消息中了吗?您不能只在新调用中使用该数据来执行任何数据库更新或您需要的任何其他操作吗?

适用于 lambda 的 AWS sdk(例如 python 的 boto3)不支持订阅主题。 仅支持发布主题。

如果你想订阅主题,你必须使用设备sdk (参考 https://docs.aws.amazon.com/iot/latest/developerguide/iot-sdks.html

然后,您可以在lambda中通过设备sdk发布和订阅。

如果您不想使用设备 sdk,则必须像下面那样使用 redis 或 dynamoDB。

设备发布响应消息 -> AWS IoT 规则触发一些操作(例如写入数据库) -> lambda 轮询数据库。