【问题标题】:Read String Lambda Function to DynamoDB将字符串 Lambda 函数读取到 DynamoDB
【发布时间】:2019-03-09 19:36:21
【问题描述】:

我正在尝试从连接到 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。

我做错了什么?

【问题讨论】:

  • 什么event数据打印?
  • 据我所知,您可以在cloudWatch上看到
  • 如果console.log 不起作用,您可以尝试使用console.info

标签: json amazon-web-services aws-lambda amazon-dynamodb aws-iot


【解决方案1】:

好的,我找到了解决方案。我将 SELECT 从之前的“*”缩小了一点,现在它可以工作了!

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

【讨论】:

    猜你喜欢
    • 2015-09-08
    • 2020-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 2021-10-23
    相关资源
    最近更新 更多