问题描述
我们打算建立一个 EdgeX Foundry 部署,从设备收集数据(通过 REST-API 发送),根据规则决定是否值得转发,如果是,则将其发送到 AWS 服务。 在服务器端,我们设置了一个 API Gateway REST-API 服务,它支持 post 和 get 请求。它调用 Lambda 服务,该服务在 DynamoDB 数据库中创建一个条目以存储请求正文中的数据(表条目:deviceid、Temperature、Timestamp)。发布的阶段仅限于某个 IP 地址。从具有此 IP 地址的机器访问完全正常。可以创建条目并列出所有表条目。 EdgeX 设置在同一台机器上并获取 valuedescription 类型的数据:“温度”。 我们将执行的规则如下:
{
"id": "test_cloud","sql": "SELECT * FROM demo WHERE temperature > 20","actions": [
{
"rest": {
"bodyType": "json","url": "https://<AWS_Address>/EdgeXCollectedData/sensordata","method": "POST","dataTemplate": "\"deviceid\":\"TestKuiper\",\"Temperature\": 123,\"Timestemp\": 123456789","sendSingle": true
}
},{
"log": {}
}
]
}
相应的流是由:
{
"sql": "create stream demo() WITH (FORMAT=\"JSON\",TYPE=\"edgex\")"
}
一旦我们将“温度”类型的数据发送到 EdgeX 的 REST-API,我们就可以看到 kuiper 日志,由于返回的错误代码 502 导致执行失败:
time="2021-01-06T17:25:05Z" level=warning msg="sink node rest_0 instance 0 publish \"deviceid\":\"TestKuiper\",\"Timestemp\": 123456789 error: rest sink fails to err http return code: 502." file="sink_node.go:278" rule=test_cloud
由于从同一台机器直接访问(通过 python 脚本),EdgeX 部署在错误“坏网关”上,这让我们非常困惑。也许这里有人对 EdgeX 有经验并发现我们的规则中有错误,或者有人知道我们如何继续调试它。非常感谢。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)