2017-03-17 7 views
1

API 게이트웨이에 LAMBDA_PROXY 통합 요청 유형이 있습니다. Lambda에서 context.succeed를 호출하면 예상대로 응답 헤더가 코드 302와 함께 전송됩니다 (아래 참조). 그러나 나는 500 및 404 오류를 처리하고 싶습니다. 그리고 지금까지 확신 할 수있는 유일한 점은 502 Bad Gateway를 얻고있는 중 오류가 잘못 리턴되고 있다는 것입니다. 내 상황이 왜 틀렸어. 파 일? 뭔가 백엔드 반환 잘못 갔다 것처럼 당신이 람다 함수 (또는 context.fail) 내에서 예외가 발생하면 다음 AWS API 게이트웨이 오류 응답이 502 "잘못된 게이트웨이"를 생성합니다.

내 handler.js

const handler = (event, context) => { 
    //event consists of hard coded values right now 
    getUrl(event.queryStringParameters) 
    .then((result) => { 
     const parsed = JSON.parse(result); 
     let url; 
     //handle error message returned in response 
     if (parsed.error) { 
      let error = { 
       statusCode: 404, 
       body: new Error(parsed.error) 
      } 
      return context.fail(error); 
     } else { 
      url = parsed.source || parsed.picture; 
      return context.succeed({ 
       statusCode: 302, 
       headers: { 
        Location : url 
       } 
       }); 
     } 
    }); 
}; 

답변

4

이며, API 게이트웨이를 읽고 (502) 이것은 당신이 기대하는 404분의 500을 반환 상태 당신이 원하는 코드와 메시지와 함께 context.succeed 방법을 사용하려면 런타임 예외 인 경우 : 내 경우, 나는이 같은 문제가 있었다

if (parsed.error) { 
    let error = { 
    statusCode: 404, 
    headers: { "Content-Type": "text/plain" } // not sure here 
    body: new Error(parsed.error) 
} 
return context.succeed(error); 
+0

내가 지금 그것을 볼 때 의미가있다, 고마워. – jmcgui05

0

은 문제는 내 기능이 context.done()에 아무것도 반환하지 않습니다. 그래서 context.done(null) 대신에 context.done(null, {});

관련 문제