gpt4 book ai didi

amazon-web-services - 为什么 Dynamodb.put 在 Lambda 函数中不起作用?返回空值。如何调试?

转载 作者:行者123 更新时间:2023-12-03 20:15:35 25 4
gpt4 key购买 nike

调试 lambda 令人沮丧。

我有一个非常简单的 lambda 函数:

const AWS = require('aws-sdk')

const dynamodb = new AWS.DynamoDB.DocumentClient({region: 'ap-southeast-2'});

exports.handler = async (event, context, callback) => {

const params = {
TableName: 'people-dev',
Item: {
id: '1',
name: 'person',
email: 'person@example.com'
}
};

dynamodb.put(params, (err, data) => {
if(err) {
callback(err, null)
} else{
callback(null, data)
}

});

};

测试响应是:
Response:
null

Request ID:
"3d7e9329-3843-4760-917d-4b4d4781dbd7"

Function Logs:
START RequestId: 3d7e9329-3843-4760-917d-4b4d4781dbd7 Version: $LATEST
END RequestId: 3d7e9329-3843-4760-917d-4b4d4781dbd7
REPORT RequestId: 3d7e9329-3843-4760-917d-4b4d4781dbd7 Duration: 243.13 ms Billed Duration: 300 ms Memory Size: 128 MB Max Memory Used: 29 MB

没有任何内容写入 Dynamo。
在 cloudwatch 中没有登录任何有用的东西。
是的,该函数对 DynamoDB 具有完全权限。

最佳答案

async回到它的位置,因为使用回调已经过时并且更容易出错。使用内置promise() node.js aws-sdk 和仅 await 上可用的方法在这些 promise 上。如果你想处理错误,只需用 try/catch 包围你的代码。堵塞。

const AWS = require('aws-sdk')

const dynamodb = new AWS.DynamoDB.DocumentClient({region: 'ap-southeast-2'});

exports.handler = async (event) => {

const params = {
TableName: 'people-dev',
Item: {
id: '1',
name: 'person',
email: 'person@example.com'
}
};

await dynamodb.put(params).promise()

return {
statusCode: 200,
body: JSON.stringify({message: 'Success'})
}

};

更多关于 async/await

关于amazon-web-services - 为什么 Dynamodb.put 在 Lambda 函数中不起作用?返回空值。如何调试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56034053/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com