在 AWS Lambda 中订阅 AWS IoT 主题
Subscribe to AWS IoT topic within AWS Lambda
我有一个 AWS Lambda 函数(由通过 API 网关的 API 调用触发)根据收到的参数(主题是唯一标识特定物联网设备的序列号)。我使用 boto3 的 IoT 数据平面客户端方法 publish() 来执行此操作。有没有办法让同一个 Lambda 函数订阅同一个 IoT 主题,以便它能够接收来自 IoT 设备的响应?
我知道 IoT 消息触发 Lambda 的规定方法是创建一个调用 Lambda 的 IoT 规则操作,但这对我来说并不适用(据我所知),因为我想要的是原始 Lambda(由外部 API 调用 API 网关触发的那个)监听 IoT 设备的响应并基于此向外部调用者发回 HTTP 响应;如果它是一个单独的 Lambda,当 IoT 设备响应其 IoT 主题时被触发,这似乎无法实现。关于如何做到这一点有什么想法吗?
为什么一定要是原来的lambda?我猜你想保存一些状态;在这种情况下,您应该保留它或在消息中传递它。
虽然不漂亮,但这使我能够执行我在问题中发布的内容: Lambda(由 API 网关调用以在开始时处理请求)轮询 SQS 队列以获取它随后使用的消息,使用它来构建并通过 API 网关将响应发送回发送 HTTP POST 请求的外部客户端。可以肯定的是,这不是使用 AWS Lambdas 的好方法,但它似乎是使用 Lambda + API 网关连接 HTTP request/response 与 IoT publish/subscribe 的唯一方法。
我有一个 AWS Lambda 函数(由通过 API 网关的 API 调用触发)根据收到的参数(主题是唯一标识特定物联网设备的序列号)。我使用 boto3 的 IoT 数据平面客户端方法 publish() 来执行此操作。有没有办法让同一个 Lambda 函数订阅同一个 IoT 主题,以便它能够接收来自 IoT 设备的响应?
我知道 IoT 消息触发 Lambda 的规定方法是创建一个调用 Lambda 的 IoT 规则操作,但这对我来说并不适用(据我所知),因为我想要的是原始 Lambda(由外部 API 调用 API 网关触发的那个)监听 IoT 设备的响应并基于此向外部调用者发回 HTTP 响应;如果它是一个单独的 Lambda,当 IoT 设备响应其 IoT 主题时被触发,这似乎无法实现。关于如何做到这一点有什么想法吗?
为什么一定要是原来的lambda?我猜你想保存一些状态;在这种情况下,您应该保留它或在消息中传递它。
虽然不漂亮,但这使我能够执行我在问题中发布的内容: Lambda(由 API 网关调用以在开始时处理请求)轮询 SQS 队列以获取它随后使用的消息,使用它来构建并通过 API 网关将响应发送回发送 HTTP POST 请求的外部客户端。可以肯定的是,这不是使用 AWS Lambdas 的好方法,但它似乎是使用 Lambda + API 网关连接 HTTP request/response 与 IoT publish/subscribe 的唯一方法。