【发布时间】:2019-11-25 11:08:43
【问题描述】:
有一个名为 Portal 的 DynamoDB 表。
从节点中编写的 Lambda 函数中,我想更新项目的 status 和 ts 字段(通过调用 signalJobStart 函数)并等待异步更新函数完成之前的承诺继续。
由于某种原因,没有发生更新,但是在操作过程中没有引发错误。
日志中没有错误,我可以在日志中看到“已完成”的日志消息。
为什么表格中的项目没有变化? 为什么我在日志中既看不到错误也看不到成功消息?
(我也尝试过没有承诺,但结果相同。表格项没有更新 - 甚至是异步的。)
这是来自 Lambda 的代码:
const AWS = require('aws-sdk');
const docClient = new AWS.DynamoDB.DocumentClient({region: 'eu-west-1'});
module.exports = {
signalJobStart: function(accountId, jobId) {
console.log("Signaling job start for account %s and job %s", accountId, jobId);
let table = "Portal";
let params = {
TableName: table,
Key:{
"accountid": accountId,
"entity": jobId
},
UpdateExpression: "SET status = :s, ts = :t",
ExpressionAttributeValues:{
":s": "running",
":t": Date.now()
},
ReturnValues:"UPDATED_NEW"
};
let updatePromise = docClient.update(params, function(err, data) {
if (err) {
console.error("Unable to update item. Error JSON:", JSON.stringify(err, null, 2));
} else {
console.log("UpdateItem succeeded:", JSON.stringify(data, null, 2));
}
}).promise();
updatePromise.then(function(data) {
console.log('Success');
}).catch(function(err) {
console.log(err);
});
console.log("FINISHED");
}};
【问题讨论】:
标签: node.js amazon-web-services aws-lambda amazon-dynamodb