【发布时间】:2019-11-16 16:33:33
【问题描述】:
我有一个假设要写入数据库的 lambda 函数。当我在本地机器上运行它时,它可以工作,但是当我将它上传到 lambda 并对其进行测试时,它并没有在数据库中放入任何东西。我使用该函数的角色可以完全访问 DynamoDB,并且当我从笔记本电脑运行它时,它的代码完全相同。知道为什么会这样吗?
这是我的 lambda。 dao 类包含实际访问 dynamo 的代码。我现在只是想上传一些常量字符串。
const DAO = require('./PostStatusDAO.js');
exports.handler = async (event, context, callback) => {
var dao = new DAO();
dao.post("this is a test", "@jordan", "@matt", "none");
const response = {
statusCode: 200,
body: {
result: "good"
}
};
return response;
};
const AWS = require('aws-sdk');
const ddb = new AWS.DynamoDB.DocumentClient({region: 'us-west-2'});
class PostStatusDAO {
post(in_text, in_user, in_author, in_attachment) {
var params = {
Item: {
user: String(in_user),
timestamp: Date.now(),
author: String(in_author),
text: String(in_text),
attachment: String(in_attachment),
},
TableName: 'Feed',
};
console.log(params);
var result = ddb.put(params, (err, data) => {
console.log("callback");
if(err) {
console.log("Error: ", err);
} else {
console.log("Data: ", data);
}
});
// console.log(result);
}
}
module.exports = PostStatusDAO;
【问题讨论】:
-
您应该等待
ddb.put操作完成,然后再从 lambda 返回响应。 -
CloudWatch Logs 中显示了什么?
标签: javascript amazon-web-services aws-lambda amazon-dynamodb