shadow/update 请求被拒绝,错误代码为413。 JSON大小为44B。

0

【以下的问题经过翻译处理】 我正在使用ESP32作为简单计数器,我的程序已经运行了几个月。为了发送更多的数据,我做了一些微小的改动,但是我遇到了这个错误。JSON有效负载的大小只有约50。 但是,数据按照我的规则存储在DynamoDB表中,没有出现错误。为什么设备信息返回到了rejected主题上,而不是accepted主题上呢?

14:49:33.250 -> $aws/things/Dev3/shadow/update - {"state": {"reported": {"9": "53,192,1667553572"}}}

14:49:33.250 -> $aws/things/Dev3/shadow/update/rejected - {"code":413,"message":"Json document too large. Size is 8202, max allowed: 8192"}

谢谢。

profile picture
专家
已提问 5 个月前54 查看次数
1 回答
0

【以下的回答经过翻译处理】 问题是您的总影子文档大小大于8192,不一定是您发送的有效负载。AWS IoT将当前有效负载合并到现有的影子文档中。在您的示例中,"reported"中的键是"9"。我不知道这代表什么,但是如果您发送了具有多个键值(例如"8"、"10"等)的更新,它们都将合并到影子文档中。请通过控制台、CLI或API调用(例如https://docs.aws.amazon.com/iot/latest/developerguide/device-shadow-rest-api.html#API_GetThingShadow)检查影子文档。

要删除整个影子内容,您可以使用DeleteThingShadow。要删除单个键/字段,只需发送一个JSON文档,其中字段值设置为"null"。

首先,我会检查您是否正在使用影子来存储设备的最新状态,而不是保存历史数据。如果已经这样,您可能有太多数据要存储在单个设备影子中。在这种情况下,您可以考虑将数据分区到多个命名影子中,其中每个命名影子文档具有8192字节的限制,但是在命名影子的数量上没有限制。

祝好。

Massimiliano

profile picture
专家
已回答 5 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则