[英]AWS Lambda DynamoDB putItem executed twice, always
很可能是愚蠢的问题,但找不到我所看到的 Lambda 行为的明确答案。
我已经创建了将虚拟记录放入 DynamoDB 表中的最简单的 Lambda 函数(以同步方式):
const AWS = require('aws-sdk');
var docClient = new AWS.DynamoDB.DocumentClient();
exports.handler = async (event, context) => {
var myTable = 'my-secret-table-name';
var i;
for(i=0; i<10; i++){
var params = {
TableName:myTable,
Item:{
PK: i.toString(),
SK: 'whatever'
}
};
await docClient.put(params, function(err, data) {
if (err) {
console.error("Error inserting to a table ", JSON.stringify(err, null, 2));
} else {
console.log("Insert successfull. Run: "+ i);
}
}).promise();
}
return "Success";
};
它实际上被执行了两次,因为您使用了多种相互冲突的方式来解决对 DynamoDB 的异步调用:
两者都会导致调用的执行。 如果您删除promise()
或回调函数的调用,则应该解决它。
请查看了解异步 JavaScript:回调、承诺和 Async/Await以了解有关不同方法之间的差异和相似之处的更多信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.