json - 将字符串 Lambda 函数读取到 DynamoDB
问题描述
我正在尝试从连接到 AWS IOT CORE 通过 MQTT 发送数据的 IOT SENSOR 将数据导入 DynamoDB。我想要单独列中的所有值,所以我为此使用 Lambda 函数。它是这样的:
关于示例/阴影/更新主题,我从传感器收到以下 UTF8 字符串:
{"SystemID":34,"SensorID":96,"ValueMax":87,"ValueMin":78}
然后我有一个 ACT/RULE 排序方式: SELECT * FROM 'EXAMPLE/shadow/update' 并使用以下代码触发 LAMBDA 函数:
console.log('Loading function');
var AWS = require('aws-sdk');
var dynamo = new AWS.DynamoDB.DocumentClient();
var table = "TEST_TABLE";
exports.handler = function(event, context) {
console.log('Received event:', JSON.stringify(event, null, 2));
var params = {
TableName:table,
Item:{
"SystemID": event.SystemID,
"SensorID": event.SensorID,
"ValueMax": event.ValueMax,
"ValueMin": event.ValueMin,
"Timestamp": String(Date.now())
}
};
console.log("Adding...");
dynamo.put(params, function(err, data) {
if (err) {
console.error("Error JSON:", JSON.stringify(err, null, 2));
context.fail();
} else {
console.log("Added:", JSON.stringify(data, null, 2));
context.succeed();
}
});
}
问题:它不起作用!但是,如果我从传感器复制有效负载并通过 AWS 测试控制台发送到 MQTT,它将作为 JSON 发布,然后 Lambda 函数工作并将其正确放入 DynamoDB。
我究竟做错了什么?
解决方案
好的,我找到了解决方案。我将 SELECT 从之前的“*”缩小了一点,现在它可以工作了!
SELECT SystemID,SensorID,ValueMin,ValueMax FROM 'EXAMPLE/shadow/update'
推荐阅读
- java - 倾城报告不维护测试订单执行
- powershell - 这在 Powershell 中可行吗?
- sql - Rails日期字符串反序列化错误格式
- android - Genymotion 无法启动 - 卡在正在启动虚拟设备上
- python - Plotly Go Plot 在 Dash 和 Datapane 上无法正确显示
- azure - 无法使用 azure devops CI 管道创建 azure 计算实例
- python - 虚拟代码具有相同名称的多个列,包括数据中不存在的类别
- python - 使用 ALM 连接工具的调度(“TDApiOle80.TDConnection”)出现 HP ALM 连接错误
- javascript - 如何在函数中获取状态?
- directory - 从 zip 文件夹中读取 .plg,删除一些行并将更新文件存储在 zip 文件夹内