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 的内存分配