AWS Lambda 함수 오류(Ruby) - AWS Lambda

AWS Lambda 함수 오류(Ruby)

코드에서 오류가 발생하면 Lambda은 해당 오류의 JSON 표현을 생성합니다. 이 오류 문서는 호출 로그에 표시되며 동기 호출 시 출력에 표시됩니다.

예 function.rb

def handler(event:, context:) puts "Processing event..." [1, 2, 3].first("two") "Success" end

이 코드에서는 형식 오류가 발생합니다. Lambda은 오류를 포착하고 오류 메시지, 유형 및 스택 추적에 대한 필드가 있는 JSON 문서를 생성합니다.

{ "errorMessage": "no implicit conversion of String into Integer", "errorType": "Function<TypeError>", "stackTrace": [ "/var/task/function.rb:3:in `first'", "/var/task/function.rb:3:in `handler'" ] }

명령줄에서 함수를 호출하면 AWS CLI가 응답을 두 개의 문서로 나눕니다. 함수 오류가 발생했음을 나타내기 위해 터미널에 표시된 응답에는 FunctionError 필드가 포함됩니다. 함수가 반환한 응답 또는 오류가 출력 파일에 기록됩니다.

$ aws lambda invoke --function-name my-function out.json { "StatusCode": 200, "FunctionError": "Unhandled", "ExecutedVersion": "$LATEST" }

오류 문서를 보려면 출력 파일을 보십시오.

$ cat out.json {"errorMessage":"no implicit conversion of String into Integer","errorType":"Function<TypeError>","stackTrace":["/var/task/function.rb:3:in `first'","/var/task/function.rb:3:in `handler'"]}
참고

Lambda의 응답에 200 (성공) 상태 코드는 Lambda에게 보낸 요청에 오류가 없음을 나타냅니다. 오류 상태 코드를 초래하는 문제의 경우 단원을 참조하십시오.

또한 Lambda은 함수의 로그에 최대 256KB의 오류 객체를 기록합니다. 명령줄에서 함수를 호출할 때 로그를 보려면 --log-type 옵션을 사용하고 응답에서 base64 문자열을 디코딩하십시오.

$ aws lambda invoke --function-name my-function out.json --log-type Tail \ --query 'LogResult' --output text | base64 -d START RequestId: 5ce6a15a-f156-11e8-b8aa-25371a5ca2a3 Version: $LATEST Processing event... Error raised from handler method { "errorMessage": "no implicit conversion of String into Integer", "errorType": "Function<TypeError>", "stackTrace": [ "/var/task/function.rb:3:in `first'", "/var/task/function.rb:3:in `handler'" ] } END RequestId: 5ce6a15a-f156-11e8-b8aa-25371a5ca2a3 REPORT RequestId: 5ce6a15a-f156-11e8-b8aa-25371a5ca2a3 Duration: 22.74 ms Billed Duration: 100 ms Memory Size: 128 MB Max Memory Used: 18 MB

로그에 대한 자세한 내용은 AWS Lambda 함수 로깅(Ruby) 단원을 참조하십시오.

이벤트 소스에 따라 AWS Lambda는 실패한 Lambda 함수를 다시 시도할 수 있습니다. 예를 들어 Kinesis가 이벤트 소스인 경우, AWS Lambda는 Lambda 함수가 성공하거나 스트림의 레코드가 만료될 때까지 실패한 호출을 재시도합니다. 재시도에 대한 자세한 내용은 AWS Lambda의 오류 처리 및 자동 재시도을 참조하십시오.