数据在什么情况下从 Lambda 发送到 AWS IoT Core?

With what context is data sent from a Lambda to AWS IoT core?

我们可以使用 lambda 函数连接到 AWS IoT Greengrass Core 并发布消息。对于接收 lambda 发布的消息的设备,需要满足两件事:1) 需要在 greengrass 中订阅 lambda(具有适当的主题)和 2) 订阅者的代码对此执行 .subscribe话题。 Lambda 示例:

import greengrasssdk
import json

# Greengrass client to publish to
client = greengrasssdk.client('iot-data')

# Executed on every messages received from the subscription
def lambda_handler(event, context):
  
  client.publish(topic='lab/greengrass/telemetry', payload=json.dumps(event))
  
  return

这里的消息是在 Lambda 的上下文中发布的,而不是在设备上发布的。同样,如果我必须将 msg 从 lambda 发送到 AWS IoT Core,则该 msg 不是来自作为设备的 lambda 上下文,而是来自 lambda 本身。

但是,我们也可以通过 Lambda 向 AWS IoT Core 或其他设备发布表示事物的消息,为此我们需要传递凭证(事物凭证)以将 Lambda 识别为设备(事物) .

我理解对了吗?

不完全是。我认为您在这里错过了 greengrass 中订阅的概念!

您可以让 Lambda 和设备相互通信或与 AWS IoT Core 通信,而无需将 lambda 配置为事物。

查看您的 Greengrass 核心中的订阅部分,您可以在其中创建一个 lambda/device/AWS IoT 核心与另一个之间的订阅。

当然,要将设备加入 greengrass,您需要将其注册为事物并为其下载凭据并根据需要放置它。但是,让一个 lambda 向其他 lambda 或设备发布消息并非如此!