Javascript AWS Lambda函数未写入DynamoDB

Javascript AWS Lambda函数未写入DynamoDB,javascript,amazon-web-services,aws-lambda,amazon-dynamodb,Javascript,Amazon Web Services,Aws Lambda,Amazon Dynamodb,我有一个lambda函数,假设它正在写入数据库。当我在本地机器上运行它时,它可以工作,但当我将它上传到lambda并测试它时,它不会将任何内容放入数据库中。我使用的函数角色完全可以访问DynamoDB,它的代码与我在笔记本电脑上运行DynamoDB时的代码完全相同。你知道为什么会这样吗 这是我的lambda。dao类包含实际访问dynamo的代码。我现在只是想上传一些常量字符串 const DAO = require('./PostStatusDAO.js'); exports.handler

我有一个lambda函数,假设它正在写入数据库。当我在本地机器上运行它时,它可以工作,但当我将它上传到lambda并测试它时,它不会将任何内容放入数据库中。我使用的函数角色完全可以访问DynamoDB,它的代码与我在笔记本电脑上运行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 DAO = require('./PostStatusDAO.js');

exports.handler = async(event, context, callback) => {
    var dao = new DAO();

    // Return new promise 
    return new Promise(function(resolve, reject) {
     // Do async job
        dao.post("this is a test", "@jordan", "@matt", "none", function(err, data) {
            if (err) {
                console.log("Error: ", err);
                reject(err);
            }
            else {
                console.log("Data: ", data);
                resolve(data);
            }
        })
    })
};


您应该等待
ddb.put
操作完成,然后再从lambda返回响应。CloudWatch日志中显示了什么?
const DAO = require('./PostStatusDAO.js');

exports.handler = async(event, context, callback) => {
    var dao = new DAO();

    // Return new promise 
    return new Promise(function(resolve, reject) {
     // Do async job
        dao.post("this is a test", "@jordan", "@matt", "none", function(err, data) {
            if (err) {
                console.log("Error: ", err);
                reject(err);
            }
            else {
                console.log("Data: ", data);
                resolve(data);
            }
        })
    })
};
const AWS = require('aws-sdk');

const ddb = new AWS.DynamoDB.DocumentClient({region: 'us-west-2'});

class PostStatusDAO {
    async post(in_text, in_user, in_author, in_attachment, callback) {
        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);

        return ddb.put(params, callback).promise();
    }
}

module.exports = PostStatusDAO;