【以下的问题经过翻译处理】 我正在尝试使用规则将数据从 AWS IoT MQTT 主题获取到 DynamoDB。示例主题是 cooler/cooler42/sensors 和示例消息
{
“水温”:10,
“时间戳”:1580370731383
}
我已经像这样定义了查询,以从主题中提取设备名称(例如 cooler42)并将其插入到 JSON 中:
SELECT *, topic(2) AS deviceName FROM 'cooler/+/sensors'
这似乎确实有效,就和我将消息重新发布到另一个主题一样,我现在看到添加了 deviceName 的相同 JSON:
{
“水温”:10,
“时间戳”:1580370731383,
“设备名称”:“cooler42”
}
我的理解是所有 3 个字段现在都可以在我的 DynamoDB 规则中使用,如下所示:
https://i.stack.imgur.com/gO9SG.png
但是我在 CloudWatch 中看到规则失败并出现错误一个或多个参数值无效:AttributeValue 可能不包含空字符串(服务:AmazonDynamoDBv2;状态代码:400;错误代码:ValidationException 和分区键(又名哈希key) 是空的:
{
"ItemRangeKeyValue":"1580370731383",
"IsPayloadJSON":"真",
"ItemHashKeyField":"设备名称",
"操作":"插入",
"ItemRangeKeyField":"时间戳",
“表”:“传感器数据测试2”,
“ItemHashKeyValue”:“” <--- 空
}
我不能使用我刚刚从规则中的主题名称中选择的设备名称吗?如果不可以,还有另一种提取方法吗?
注意:如果我手动将消息发布到已经包含 deviceName 的主题上,那么它确实可以正常工作,但我在受限环境中工作并且不想要额外的有效负载大小。
注意我也将这个问题发布到 SO:https://stackoverflow.com/questions/59982125/aws-iot-dynamodb-rule-not-able-to-read-value-selected-from-topic-function