【问题标题】:With what context is data sent from a Lambda to AWS IoT core?从 Lambda 向 AWS IoT 核心发送数据的上下文是什么?
【发布时间】:2020-10-27 20:59:18
【问题描述】:

我们可以使用 lambda 函数连接到 AWS IoT Greengrass 核心并发布消息。对于接收 lambda 发布的消息的设备,需要满足 2 件事: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 标识为设备(事物)。

我理解对了吗?

【问题讨论】:

    标签: aws-iot greengrass aws-iot-core aws-iot-greengrass


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 我正在尝试比较 Greengrass 与 IoT Core。在后一种情况下,lambda 必须是能够发布的东西。在 greengrass 的情况下,lamda 不是一个东西。对于订阅者接收这个 lambda 发布的消息,必须满足 2 件事 - 1)订阅者必须通过代码订阅适当的主题,以及 2)应该有一个从 lambda 到那些感兴趣的订阅者的 greengrass 订阅(在绿草中)。
    • 是的,你是对的! 1. 如果您想在 AWS Cloud 中使用 Lambda,则需要将其配置为事物,以便它可以与 AWS IoT Core 通信,因此订阅将在该 Lambda 代码中处理 2. 但如果该 Lambda 在 GG 内组,组内的简单订阅就足够了
    猜你喜欢
    • 2023-04-06
    • 2019-07-17
    • 2019-11-04
    • 1970-01-01
    • 2023-04-01
    • 2018-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多