2016-09-21 1 views
3

나는 성공 & 오류 응답을 생성하기위한 샘플 람다 함수를 만들었습니다. 기능은 내가 API 게이트웨이를 사용하여이 기능을 테스트 한 때람다 반환 만 200 회 코드

exports.handler = (event, context, callback) => { 
if(event.val1=="1") 
{ 
callback(null, 'success'); 
}else 
{ 
callback(true, 'fail'); 
} 
}; 

아래, 나는 다른 응답 본문을 가지고처럼, 그러나 응답 코드 (항상 200 OK 응답 코드를 반환) 동일합니다.

람다 함수에서 상태 코드를 사용자 정의 할 수 있습니까 (예 : 성공 응답의 경우 오류 응답 & 200)?

+1

http://stackoverflow.com/a/31371862/1428388은 유용합니까? – jbird

답변

1

API 게이트웨이의 새로운 단순화 된 Lambda proxy 기능을 살펴볼 수 있습니다.

이것을 사용하여 상태 코드를 정의하고 람다에서 직접 머리글과 본문 내용을 반환 할 수 있습니다. 문서에서

예 : 통합 응답에 응답 매핑 템플릿을 사용한다 AWS의 API GW에서 사용자 지정 오류 코드를 전송하기 위해

'use strict'; 
console.log('Loading hello world function'); 

exports.handler = function(event, context) { 
    var name = "World"; 
    var responseCode = 200; 
    console.log("request: " + JSON.stringify(event)); 
    if (event.queryStringParameters !== null && event.queryStringParameters !== undefined) { 
     if (event.queryStringParameters.name !== undefined && event.queryStringParameters.name !== null && event.queryStringParameters.name !== "") { 
      console.log("Received name: " + event.queryStringParameters.name); 
      name = event.queryStringParameters.name; 
     } 

     if (event.queryStringParameters.httpStatus !== undefined && event.queryStringParameters.httpStatus !== null && event.queryStringParameters.httpStatus !== "") { 
      console.log("Received http status: " + event.queryStringParameters.httpStatus); 
      responseCode = event.queryStringParameters.httpStatus; 
     } 
    } 

    var responseBody = { 
     message: "Hello " + name + "!", 
     input: event 
    }; 
    var response = { 
     statusCode: responseCode, 
     headers: { 
      "x-custom-header" : "my custom header value" 
     }, 
     body: JSON.stringify(responseBody) 
    }; 
    console.log("response: " + JSON.stringify(response)) 
    context.succeed(response); 
}; 
0

. 기본적으로 API GW에서 반환하려는 각 상태 코드에 대한 정규식을 정의합니다.

단계 : 각 상태 코드 AWS Documentation

  • 위한 방법 응답을 정의

    이 구성에게 HTTP 리턴 코드를 사용하여 각 상태 매핑에 통합 응답 정규식을 정의 API GW가 클라이언트에 반환 한 것은 "regularPattern"의 정규 표현식과 일치하는 클라이언트입니다.

    마지막으로 이러한 구성을 처리하기 위해 API GW 프레임 워크를 사용하는 것이 좋습니다. Serverless은 매우 좋은 프레임 워크입니다.

    myResponseTemplate: 
    application/json;charset=UTF-8: | 
    #set ($errorMessageObj = $util.parseJson($input.path('$.errorMessage'))) { 
        "status" : $errorMessageObj.status, 
        "error":{ 
         "error_message":"$errorMessageObj.error.message", 
         "details":"$errorMessageObj.error.custom_message" 
        } 
    } 
    responsesValues: 
    '202': 
        selectionPattern: '.*"status": 202.*' 
        statusCode: '202' 
        responseParameters: {} 
        responseModels: {} 
        responseTemplates: '$${myResponseTemplate}' 
    '400': 
        selectionPattern: '.*"status": 400.*' 
        statusCode: '400' 
        responseParameters: {} 
        responseModels: {} 
        responseTemplates: '$${myResponseTemplate}' 
    

    그리고 단순히 (다음 파이썬 조각 같이 당신의 람다에서 JSON 개체를 반환 비슷한 사용할 수 있습니다 (서버를 사용하지 않는 0.5 조각)를 다음과 같이 템플릿을 정의 할 수 있습니다 Servereless을 사용

    nodejs에서 접근) :

    def handler(event, context): 
        # Your function code ... 
        response = { 
         'status':400, 
         'error':{ 
          'error_message' : 'your message', 
          'details' : 'your details' 
          } 
        } 
        return response 
    

    도움이 되었기를 바랍니다.

    g.

  • 관련 문제