AWS 拉姆达 "Process exited before completing request"
AWS Lambda "Process exited before completing request"
我正在尝试调用 DynamoDB 客户端方法并从 DynamoDB table 获取一项。我正在使用 AWS Lambda。但是,我不断收到消息:
"Process exited before completing request."
我增加了超时时间只是为了确定,但是处理时间小于超时时间。有什么建议吗?
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);
// ...
});
});
};
消息"Process exited before completing request"表示Javascript函数在调用context.done
(或context.succeed
等)之前退出。通常,这意味着您的代码中存在一些错误。
我不是 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
当lambda执行完成请求时,
未能调用上述回调之一,
您将看到以下错误:
"Process exited before completing request."
您的代码有误。删除最后一个 });并且不要使用上下文它是为了向后兼容,在 node.js 4.3 和 6.1 运行时使用回调。
查看您的内存消耗(包含在最后一行日志中)。当我为 lambda 函数分配的内存太少时,我收到了同样的消息。
可能您没有遵循使用该函数的 aws lambda 标准
检查这个 Golang 代码。
package main
import "github.com/aws/aws-lambda-go/lambda"
func main() {
lambda.Start(yourFunction)
}
func yourFunction(){
// do your stuff
}
检查您的 lamda 内存使用情况,对我来说,发生此错误是因为 lambda 使用了 201 MB 内存,这超出了执行允许的 200 MB 内存。
首先验证您的代码,如果没有问题,请从配置 > 常规配置 > 编辑 > 增加内存中增加对此 lambda 的内存分配
我正在尝试调用 DynamoDB 客户端方法并从 DynamoDB table 获取一项。我正在使用 AWS Lambda。但是,我不断收到消息:
"Process exited before completing request."
我增加了超时时间只是为了确定,但是处理时间小于超时时间。有什么建议吗?
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);
// ...
});
});
};
消息"Process exited before completing request"表示Javascript函数在调用context.done
(或context.succeed
等)之前退出。通常,这意味着您的代码中存在一些错误。
我不是 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
当lambda执行完成请求时,
未能调用上述回调之一,
您将看到以下错误:
"Process exited before completing request."
您的代码有误。删除最后一个 });并且不要使用上下文它是为了向后兼容,在 node.js 4.3 和 6.1 运行时使用回调。
查看您的内存消耗(包含在最后一行日志中)。当我为 lambda 函数分配的内存太少时,我收到了同样的消息。
可能您没有遵循使用该函数的 aws lambda 标准 检查这个 Golang 代码。
package main
import "github.com/aws/aws-lambda-go/lambda"
func main() {
lambda.Start(yourFunction)
}
func yourFunction(){
// do your stuff
}
检查您的 lamda 内存使用情况,对我来说,发生此错误是因为 lambda 使用了 201 MB 内存,这超出了执行允许的 200 MB 内存。
首先验证您的代码,如果没有问题,请从配置 > 常规配置 > 编辑 > 增加内存中增加对此 lambda 的内存分配