web-dev-qa-db-ja.com

AWSLambdaから呼び出されたときにAWSDynamoDBが検証エラーを返す

AWS Lambdaを使用していて、AWSDynamoDBに何かを書き込もうとしています。私は次のコードを使用します:

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
10
Martin Kretz

これは、Nodejsのawssdkが変更されたために発生しました。

使用している場合:

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

33
Martin Kretz