无法从 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
块。
所以,我试图在 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
}
}
"
我有这个输出
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
块。