node.js - AWS Lambda javascript-sdk,实现 dynamodb putItem 方法接收超时
问题描述
我已经尝试了两种方法Async Handlers
来Non-Async Handlers
实现 dynamodb putItem 方法。它返回了无效响应。它适用于注释 setTimeout 函数。
如前所述,我尝试以非异步处理程序的方式承诺 dynomodb putItem 方法和官方文档https://docs.aws.amazon.com/lambda/latest/dg/nodejs-handler.html。但仍然没有运气。有人可以指出我的代码问题吗?
const AWS = require('aws-sdk');
const dynamodb = new AWS.DynamoDB({
region: 'ap-south-1',
apiVersion: '2012-08-10'
});
exports.lambdaHandler = async function(event) {
const promise = new Promise(function(resolve, reject){
// setTimeout(function(){
// console.log("resolvedx")
// resolve({statusCode: 200, body: "resolvedx"})
// }, 200)
dynamodb.putItem({
TableName: 'CUSTOMER_LIST',
Item: {
'CUSTOMER_ID': { N: '012' },
'CUSTOMER_NAME': { S: 'zzzza' }
}
}
, function(err, data) {
if (err) {
console.log("err", err);
reject(JSON.stringify({statusCode:200, body:err}));
} else {
console.log("success", data);
resolve(JSON.stringify({statusCode:200, body:data}));
}
})
})
return promise
}
作为Non-Async Handlers
exports.lambdaHandlerx = (event, context, callback) => {
const dbPromise = () => new Promise((resolve, reject) => {
console.log("inside db promise")
dynamodb.putItem({
TableName: 'CUSTOMER_LIST',
Item: {
'CUSTOMER_ID': { N: '023' },
'CUSTOMER_NAME': { S: 'asdddwa' }
}
}
, function(err, data) {
if (err) {
console.log("err", err);
reject(err);
} else {
console.log("success", data);
resolve(data);
}
})
})
Promise.all([dbPromise()]).then(data => {
console.log("then", data)
callback(null, {
'statusCode': 200,
'body': JSON.stringify({
message: "dataxz"+ JSON.stringify(data)
})
})
}
).catch(e => {
callback(null, {
'statusCode': 200,
'body': JSON.stringify({
message: 'err'
})
})
})
}
输出
Function returned an invalid response (must include one of: body, headers, multiValueHeaders or statusCode in the response object). Response received:
解决方案
推荐阅读
- python - 为什么在 python 类中使用变量时会出现类型错误?
- rust - ink3的正确使用方法是什么?self.env().block_timestamp() | 测试错误::'未初始化的执行上下文:UninitializedBlocks'
- flutter - 在firestore中颤动搜索两个项目
- math - 计算与螺旋相切的等距项目的旋转
- kubernetes - istio 异常值检测和就绪探针之间的差异
- javascript - 如何在 PHP 中将输入表单数据保存为数组
- php - 按时间和名称的 SQL 语句
- c++ - Codecov:C++ 库的 gcov 代码覆盖率
- c - 我想打印以下数字金字塔
- vue.js - 提交表单时,Vuelidate 为所有属性设置了脏 false