我通过在设置阶段设置触发器,根据AWS指南设置我的Lambda函数。 (the guide,除了指南使用IoT按钮并且我正在使用规则)
它为我设置AWS IoT控制台中的触发器规则。该东西设置了一个证书和一个“iot:*”政策,它给予它完整的物联网访问。
事情是在某个主题下不断向云端发送消息。如果我在AWS IoT Test控制台中订阅了消息,则可以接收消息。
如果我从AWS IoT Test控制台发布该主题下的内容,则会触发我的lambda函数。
但是该功能不会从该事件发送的连续消息中触发。它仅从物联网测试控制台触发。
我没有在与此触发器相关的事物的证书下添加任何其他策略。我必须这样做吗?它应该是什么?
我尝试将我的主题SQL更改为 SELECT * FROM'*'
答案 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日志:
然后,检查您的AWS IoT控制台是否有影子更新(下面的绿色-“Atualizaçõesde sombra”)以及出版物(橙色)
因此,您的解决方案将如下所示:
有关使用Lambda的AWS IoT端到端实施的完整详细信息,请访问: