brunch

You can make anything
by writing

C.S.Lewis

by 오준석 Mar 02. 2018

API Gateway와 Lambda Proxy 고생담

AWS는 자꾸 새로운게 나오는데 문서가 한글인데도 어렵다!!

2018년이 되서는 운영하던 학원을 접을 준비를 하고 있기 때문에 학생도 안 받고 삽질할 기회(?)가 없을 줄 알았다. 하지만 별 것도 아닌 것에 엄청 오랬동안 삽질을 하게 되는데...


발단

서버에 GET또는 POST로 간단한 문자열을 담아 HTTP 요청을 보내면 다시 돌려주는 간단하게 에코 서버를 만들 일이 생겼다. 그래서 늘 하던대로 PHP나 Node.js로 만들면 되는데, 갑자기 AWS로 하기로 한다.


과정

과거에 오버워치 전적검색기 만들 때 AWS 람다와 API 게이트웨이를 사용해 봤기 때문에 자신있게 작업에 들어갔다.

서버리스 아키텍쳐. 소위 이런식의 구성임

그런데 역시나 AWS는 간만에 들어오면 항상 뭔가 추가되어 있다. 일단 메뉴가 한글화 되었다. 문서도 거의 한글화가 되었다. (하지만 무슨 말인지 모르는게 많다!!)


일단 람다 함수를 만들러 들어갔는데 뭔가 이상하게 하나 생겼다. 프록시 리소스로 구성? 다행히 한글화된 힌트가 보인다. 하하하.

근데 무슨 소린지 모르겠다. 미치도록 궁금하다.

프록시 리소스로 구성이 도대체 뭘까

문서를 읽어도 모르겠다. 이전에는 GET, POST 메소드를 내가 지정해서 뭔가 셋팅을 했던것을 이제는 ANY로 아무거나 통할수 있게 된 것 같은데...


일단 내가 필요한 엔트리 포인트로 echoGet, echoPost 를 만들고 다음과 같이 구성했다. 

API 게이트웨이 구성

통합 요청에도 LAMBDA_PROXY로 구성하는 것이 생겼다. 좀 찾아보니 이걸 선택하면 다른 건 아무것도 안 건드려도 된단다.


여기서 API GATEWAY Proxy란?

API 게이트웨이에서 Lambda함수에 링크할 때 URI등을 구체적으로 설정해야 하는데, PROXY 통합으로 전부 Proxy된 서비스로 요청이 던져진다고 하는데...


테스트에서 고생한 점

Proxy된 요청으로 결과를 리턴할 때 Node.js를 예를 들면 callback 함수의 두 번째 인자에 JSON 형식의 결과를 던지면 람다 함수 테스트에는 문제가 없지만 API GATEWAY에서 에러가 발생한다. ????

callback(null, { result: "ok" }); 


왜 에러가??

Proxy통합으로 람다를 호출할 때에는 결과를 리턴할 때 지정된 형식으로 전달해야 한다.

AWS의 문서 중에 Lambda 프록시 통합을 사용하여 API Gateway API 구축과 프록시 통합에 대한 Lambda 함수의 출력 형식을 참조하면 된다. 물론 나도 이 한글화된 문서를 열심히 읽으면서 했으나 나만 이해가 안 되는 건지 하루를 꼬박 고생했다.

Proxy 통합을 사용할 때는 꼭 정해진 형식으로 리턴해야 한다.

이게 잘 되는 샘플. 

이렇게 하면 에러 안 남







마지막으로

AWS 문서좀 알아먹기 좋게 좀 해 줘요.

매거진의 이전글 구글맵을 둘러싼 뷰그룹에서의 클릭 처리

작품 선택

키워드 선택 0 / 3 0

댓글여부

afliean
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari