无法从 lambda 写入 DynamoDB

Cant write on DynamoDB from lambda

所以,我试图在 this tutorial 之后从 lambda 写入 DynamoDB,但只工作了一次,再也没有,我不知道为什么会这样。

const AWS = require('aws-sdk');
//AWS.config.update(region: 'us-east-2'});
const ddb = new AWS.DynamoDB.DocumentClient({region: 'us-east-2'});

async function createRequest(UUID, coin, hour){
    const params = {
        TableName: '<Table_Name>',
        Item: {
            'UUID': UUID,
            "Moneda": coin,
            "Hora": hour
        }
    };
    try{
        ddb.put(params); //This should be await, but I need to write on console only if was ok
        console.log("Inserted:",params); //This do the log, thats make me think it working
    }catch(err){
        console.error("Oh no!",err); //Never print this error
    }
}

"" 最终是我的 table 在 DynamoDB 上的名称。如果你想知道为什么我从 lambda 写?是因为我在调用这个方法之前做了一些处理。我拥有 AWS 所需的所有 Execution role permissions,但再也无法使用了。

我有这个输出

Response
null

如果我将线路更改为 await... await ddb.put(params); 在上面的日志中,我有 我出于私人原因删除了 json 响应,与此上下文无关 Await for DB

问题是您没有await接收put 的响应。您有一个 async 函数,但 Lambda 在发送完请求后立即退出。这意味着它没有给你的回应。 JavaScript 的当前 SDK 也要求您将 .promise() 添加到调用中。所以代码看起来像这样:

await ddb.put(params).promise();

我认为你其余的逻辑没问题。如果 put 没有抛出,它只会在该行之后立即命中 console.log 。如果是这样,您将最终进入 catch 块。