通过 kuiper REST-sinc

问题描述

我们打算建立一个 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 (将#修改为@)