Я пытаюсь получить данные в DynamoDB с IOT SENSOR, подключенного к AWS IOT CORE, отправляя данные через MQTT.Я хочу, чтобы все значения были в отдельных столбцах, поэтому я использую лямбда-функцию для этого.Вот так:
По теме ПРИМЕР / тень / обновление я получаю следующее как UTF8 STRING от датчика:
{"SystemID":34,"SensorID":96,"ValueMax":87,"ValueMin":78}
У меня тогда есть ACT / RULE, который сортирует по: SELECT *ОТ «ПРИМЕР / тень / обновление» и запуск функции 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();
}
});
}
Проблема: не работает!Но если я скопирую полезную нагрузку с датчика и отправлю в MQTT через тестовую консоль AWS, она будет отправлена в виде JSON, а затем функция Lambda сработает и правильно поместит ее в DynamoDB.
Что я делаю не так?