【问题标题】:AWS IoT Thing can't trigger AWS Lambda function?AWS IoT Thing 无法触发 AWS Lambda 函数?
【发布时间】:2018-01-15 14:25:24
【问题描述】:

我根据 AWS 指南通过在设置阶段设置触发器来设置我的 Lambda 函数。 (the guide 除了指南使用 IoT 按钮而我使用的是规则)

它为我在 AWS IoT 控制台中设置了触发规则。这个东西是用证书和“iot:*”策略设置的,它可以完全访问物联网。

事情就是在某个主题下不断地向云端发送消息。如果我在 AWS IoT 测试控制台中订阅,则可以接收消息。

如果我从 AWS IoT 测试控制台发布该主题下的内容,则会触发我的 lambda 函数。

但该功能不会从事物发送的连续消息中触发。它仅从 IoT 测试控制台触发。

我没有在证书下为与此触发器相关的事物添加任何其他策略。我必须这样做吗?应该是什么?

我尝试将主题 SQL 更改为 SELECT * FROM '*'

【问题讨论】:

    标签: amazon-web-services aws-lambda aws-iot


    【解决方案1】:

    尝试将您的 SQL 更改为 SELECT * FROM '#'。使用#,您可以获得每个已发布的主题。当您使用 * 时,您不会获得主题,例如sample/newTopic.

    使用此 SQL 语句,Lambda 函数会为每条传入消息调用。当 AWS IoT 控制台显示消息并且您的 Lambda 函数没有执行任何操作时,请尝试查看 Lambda 是否在 CloudWatch 中记录了日志。

    【讨论】:

      【解决方案2】:

      如果您的 AWS IoT 事物无法触发 AWS Lambda 函数,您可能遇到了 JSON 映射问题,并且还需要改进您的 SQL 查询。就我而言,我使用以下代码为 Lambda 提供了一个干净的输入:

      SELECT message.reported.* from "#"
      

      使用 JSON 映射:

      {
        "desired": {
          "light": "green",
          "Temperature": "55",
          "timestamp": 1526323886
        },
        "reported": {
          "light": "blue",
          "Temperature": "55",
          "timestamp": 1526323886
        },
        "delta": {
          "light": "green"
        }
      }
      

      然后您分析 CloudWatch 日志:

      然后,检查您的 AWS IoT 控制台是否有影子更新(下方绿色 - “Atualizações de sombra”)以及出版物(橙色)

      因此,您的解决方案将如下所示:

      有关使用 Lambda 端到端实施 AWS IoT 的完整详细信息,请访问:

      IoT Project - CPU Temperature from Ubuntu to AWS IoT

      【讨论】:

        猜你喜欢
        • 2020-02-15
        • 2018-12-04
        • 2020-06-10
        • 1970-01-01
        • 2016-04-19
        • 1970-01-01
        • 1970-01-01
        • 2019-08-23
        • 1970-01-01
        相关资源
        最近更新 更多