我正在使用 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
最佳答案
发生这种情况是因为 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
关于amazon-web-services - 从 AWS Lambda 调用时,AWS DynamoDB 返回验证错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32451380/