운동하는 공대생

AWS API Gateway 비동기 실행으로 504 Time out error 해결 본문

AWS/API GateWay

AWS API Gateway 비동기 실행으로 504 Time out error 해결

운동하는 공대생 2022. 11. 2. 14:42
728x90
반응형

 AWS API Gateway 통신을 하면서 통신 시간이 최대 29,000ms 즉 29초까지 설정이 되어있다. 기본으로 설정된 이 시간은 동기식으로 함수를 실행한다면 문제가 발생한다. 그래서 이 작업에서 문제를 해결하기 위해서 비동기 식을 함수를 처리하는 방식을 선택하여 문제를 해결했다.

 

 

동기식

 

  • 동기식 통신 및 동기식 프로그래밍은 동시에 라는 뜩을 가지고 있으며 한번 요청을 보내면 응답이 돌아오는 형식으로 통신이 이루어진다. 이렇게 한다면 동기식 통신에서는 한 번의 요청 값마다 응답을 기다려야 하는 시간(Block)이 필연적으로 발생한다. 즉 요청을 기다리는 동안에는 아무것도 하지 않고 응답을 기다리는 상태이다.

 

비동기 

 

  • 비동기식 통신을 동기식과 반대로 동시에 통신하지 않는다는 이야기 이다. 한 번의 요청을 보내더라고 응답이 오는 것을 기다리지 않고 통신을 하는 방식이다. 이는 동기식과 반대로 기다리는 시간이 필요하지 않다(Non Block)는 장점이 있지만 응답 값에 따라 처리를 해야 하는 서비스에서는 비동기식 방식보다 동기식이 더 적합하다.

 

출처: https://inpa.tistory.com/entry/WEB-%F0%9F%8C%90-%EB%B9%84%EB%8F%99%EA%B8%B0Async%ED%86%B5%EC%8B%A0-%EB%8F%99%EA%B8%B0Sync%ED%86%B5%EC%8B%A0

 

 

 

Solution

  • 먼저 AWS API 에서 API를 만들고 이후 Postman으로 호출을 했는데 이렇게 에러가 발생했다. 로그 값을 확인하니 AWS Lambda에서 통신을 하면서 함수가 처리되는 시간이 29초 이상 걸리는 상황이었다.

 

  • 해결하는 방식은 API 통신 방식을 비동기식으로 바꿔줘서 문제를 해결했다.  이제 API Gateway에서 API 통신 방식을 바꾸는 방법에 대하여 설명을 해보겠다.

 

 

 

  • 먼저 생성한 API에서 '통합 요청' 메뉴에 들어가서 HTTP 요청 헤더에서 헤더를 추가해준다. X-Amz-Invocation-Type으로 헤더를 추가 그리고 매핑을 'Event'로 설정해주고 API를 배포한다. 

 

 

  • 이후 API를 호출하면 X-Amz-Invocation-Type으로 키값을 설정하고 Event로 값을 입력하면 비동기 통신이 가능하다.
728x90
반응형

'AWS > API GateWay' 카테고리의 다른 글

AWS Gate Way(API)  (2) 2022.09.21
Comments