我使用以下SQL创建了一个AWS IOT规则:
SELECT * FROM 'colors' WHERE color = 'green'
然后我使用IoT控制台中的“测试工具”将以下消息发布到'colors'主题:
{
"default": "{\"color\":\"green\",\"temperature\":100}"
}
该规则不会触发已配置的操作,即将消息发送到SNS主题。
在cloudwatch日志中,我看到以下错误消息:
[ERROR] EVENT:WhereEval TOPICNAME:colors CLIENTID:iotconsole-1554220753724-0 MESSAGE:Error while evaluating where clause: Undefined result
我错过了什么? AWS IoT SQL documentation定义'='运算符。
好的我发现了我的错误。 SQL语法没有错,错误是消息。我不得不将消息更改为:
{
"default": "{\"color\":\"green\",\"temperature\":200}",
"color": "green"
}
现在SQL能够找到'color'属性。
在SNS主题上发布的操作已经完成,我收到了在“消息”字段中编写的未转义的JSON:
{"color":"green","temperature":200}
我认为您的SQL语法错误,IoT规则应该是:SELECT default.color,default.temperature FROM'color'WHERE color ='green'