【问题标题】:AWS DynamoDB returns validation error when called from AWS Lambda从 AWS Lambda 调用时,AWS DynamoDB 返回验证错误
【发布时间】:2015-09-08 15:11:26
【问题描述】:

我正在使用 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

【问题讨论】:

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


    【解决方案1】:

    这是因为 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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-05
    • 2018-11-28
    相关资源
    最近更新 更多