Rup*_*ert 55 amazon-web-services aws-lambda
我试图调用DynamoDB客户端方法并从DynamoDB表中获取一个项目.我正在使用AWS Lambda.但是,我一直收到消息:
"在完成请求之前退出流程."
我已经增加了超时以确保,但处理时间小于超时.有什么建议?
console.log('Loading event');
var AWS = require('aws-sdk');
var dynamodb = new AWS.DynamoDB({apiVersion: '2012-08-10'});
exports.handler = function(event, context) {
dynamodb.listTables(function(err, data) {
});
var params = {
"TableName": "User",
"Key":
{"User Id" : {"S":event.objectId}
},
"AttributesToGet" : ["First Name","Last Name", "Latitude", "Longitude"],
"ConsistentRead" : true
}
dynamodb.getItem(params, function(response,result) {
response.on('data', function(chunk){
console.log(""+chunk);
console.log("test1")
context.done(result);
});
result.on('ready', function(data){
console.log("test2")
console.log("Error:" + data.error);
console.log("ConsumedCapacityUnits:" + data.ConsumedCapacityUnits);
context.done('Error',data);
// ...
});
});
};
Run Code Online (Sandbox Code Playgroud)
lin*_*nqu 55
看一下你的内存消耗(包含在上一个日志行中).当我为lambda函数分配的内存太少时,我收到了相同的消息.
gar*_*aat 51
消息"在完成请求之前退出进程"意味着在调用context.done(或context.succeed等)之前退出Javascript函数.通常,这意味着您的代码中存在一些错误.
我不是一个Javascript专家(根本没有)所以可能有更优雅的方法来查找错误,但我的方法是console.log在我的代码中放入一堆消息,运行它,然后查看日志.我通常可以对违规线进行归零,如果我看得太久,我通常可以弄清楚我的错误.
我看到你已经有了一些日志记录.你在输出中看到了什么?
我用过callback,而不是context.
关于aws网站使用的最新例子callback而不是context.
要完成请求,必须调用以下任一项:
callback(error); // This is used when there is an error
// or
callback(null, data); // This is used when there is a success
// 'data' will contain success result, like some JSON object
Run Code Online (Sandbox Code Playgroud)
当lambda执行完成请求时,
如果未能调用上述回调之一,
您将看到以下错误:
"在完成请求之前退出流程."
| 归档时间: |
|
| 查看次数: |
49426 次 |
| 最近记录: |