Emm*_*uel 4 amazon-web-services amazon-dynamodb aws-lambda
调试 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)
}
});
};
Run Code Online (Sandbox Code Playgroud)
测试响应是:
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
Run Code Online (Sandbox Code Playgroud)
没有任何内容写入 Dynamo。在 cloudwatch 中没有登录任何有用的东西。是的,该函数对 DynamoDB 具有完全权限。
放async回到它的地方作为使用回调已经过时,而且更容易出错。使用promise()node.js aws-sdk 上可用的内置方法,并仅await根据这些承诺。如果您想处理错误,只需用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'})
}
};
Run Code Online (Sandbox Code Playgroud)
更多关于异步/等待
| 归档时间: |
|
| 查看次数: |
400 次 |
| 最近记录: |