从AWS Lambda调用时,AWS DynamoDB会返回验证错误

时间:2015-09-08 07:11:26

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

我正在使用AWS Lambda并尝试向AWS DynamoDB写一些东西。我使用以下代码:

var tableName = "locations";
var item = {
    deviceId: {
        S: event.deviceId
    },
    timestamps: {
        S: event.timestamp 
    }
}
var params = {
    TableName: tableName,
    Item: item
};

dynamo.putItem(params, function(err, data) {
    if (err) {
        context.fail(new Error('Error ' + err));
    } else {
        context.success(null);
    }
});

我收到以下错误:

returns Error ValidationException: One or more parameter values were invalid: Type mismatch for key deviceId expected: S actual: M

1 个答案:

答案 0 :(得分:31)

这是因为Nodejs的aws sdk发生了变化!

如果您正在使用:

var doc = require('dynamodb-doc');
var dynamo = new doc.DynamoDB();

然后putItem调用(以及大多数其他调用)的参数已经改变,而是需要:

var tableName = "locations";
var item = {
    deviceId: event.deviceId,
    timestamp: event.timestamp,
    latitude: Number(event.latitude),
    longitude: Number(event.longitude)
}
var params = {
    TableName: tableName,
    Item: item
};

在此处阅读有关新sdk的所有内容:https://github.com/awslabs/dynamodb-document-js-sdk