我有两个 dynamoDB 表,table1 和 table2,在 table1 上启用了一个流。两者都有一个名为“id”的字符串键。我还有一个 lambda 函数,它从流中读取对 table1 的插入,如果它们满足某些条件,则将它们镜像到 table2。这是我的 JS 代码(ES6 语法)不太好用:
const dynamoDb = new AWS.DynamoDB.DocumentClient();
function mirrorInserts(event, context, callback) {
event.Records.forEach((record) => {
if (record.eventName != 'INSERT') {
console.log('Ignored ' + record.eventName + ' stream event.');
return;
}
var input = record.dynamodb.NewImage;
var id = input.id.S
if (myCondition(input)( {
const params = {
TableName: table2,
Key: {
id: id,
},
Item: input,
};
dynamoDb.put(createParams, (result, error) => {
if (error) {
console.error(error);
}
});
});
}
使用此函数会出现此错误:
一个或多个参数值无效:预期键 ID 的类型不匹配:S 实际:M
该消息很容易解释,但我对此感到困惑,因为我使用的 id 应该是一个字符串。此外,是否有一种简单的方法可以按原样插入整个项目?