0

我们可以使用 lambda 函数连接到 AWS IoT Greengrass 核心并发布消息。要让设备接收 lambda 发布的 msg,需要满足 2 件事:1) 需要订阅 greengrass 中的 lambda(具有适当的主题)和 2) 订阅者的代码执行.subscribe该主题。拉姆达示例:

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 标识为设备(事物)。

我理解对了吗?

4

1 回答 1

1

不完全的。我认为您在这里缺少绿草中的订阅概念!

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

查看您的 Greengrass 核心中的订阅部分,它允许您在一个 lambda/设备/AWS IoT Core 与另一个之间创建订阅。

当然,要将设备载入 greengrass,您需要将其注册为事物并下载其凭据并根据需要放置它。但这不是让 lambda 向其他 lambda 或设备发布消息的情况!

于 2020-10-22T04:31:03.227 回答