AWS IoT Thing无法触发AWS Lambda函数?

时间:2017-08-08 06:49:07

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

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

它为我设置AWS IoT控制台中的触发器规则。该东西设置了一个证书和一个“iot:*”政策,它给予它完整的物联网访问。

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

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

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

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

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

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

如果您的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日志:

CloudWatch

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

AWS IoT Console

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

AWS IoT Solution

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

IoT Project - CPU Temperature from Ubuntu to AWS IoT