Nice programing

AWS Lambda“요청 완료 전에 프로세스 종료 됨”

nicepro 2021. 1. 6. 20:46
반응형

AWS Lambda“요청 완료 전에 프로세스 종료 됨”


DynamoDB 클라이언트 메서드 를 호출 하고 DynamoDB 테이블에서 항목 하나를 가져 오려고합니다. 내가 사용하고 AWS 람다를 . 그러나 계속 메시지가 나타납니다.

"요청을 완료하기 전에 프로세스가 종료되었습니다."

확인하기 위해 제한 시간을 늘 렸지만 처리 시간이 제한 시간보다 짧습니다. 어떤 충고?

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);
    // ...
});
});
};

"요청을 완료하기 전에 프로세스가 종료되었습니다"라는 메시지는 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  

When lambda execution completes the request,
failing to call one of the above callbacks,
you will see below error:

"Process exited before completing request."


Error in your code. Remove the last }); and don't use context it is there for backward compatibility, use callbacks on node.js 4.3 and 6.1 runtime.

ReferenceURL : https://stackoverflow.com/questions/31627950/aws-lambda-process-exited-before-completing-request

반응형