Считать строковую лямбда-функцию в DynamoDB - PullRequest
0 голосов
/ 04 октября 2018

Я пытаюсь получить данные в 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.

Что я делаю не так?

1 Ответ

0 голосов
/ 04 октября 2018

Хорошо, я нашел решение.Я немного сузил SELECT от "*", и теперь он работает!

SELECT SystemID,SensorID,ValueMin,ValueMax FROM 'EXAMPLE/shadow/update'
...