본문 바로가기
AWS/Lambda

AWS Lambda Troubleshooting 3: Error handling

by 알파해커 2020. 3. 8.
반응형

Lambda에서 Exception이 발생했을 떈 어떻게 될까

 

특히 Lambda와 Lambda 간의 통신일 땐(, Lambda 1이 Lambda 2에게로 요청을 보냈다고 했을 때),

만약에 Lambda 2에서 에러가 발생하면, Lambda 1은 Retry를 시도한다.

Retry는 최대 두 번까지 일어나고, 결과적으로 총 최대 3번의 Request가 들어가게 된다.

 

만약 이것이 의도된 Retry가 아니라면 비용적으로 문제가 된다.

왜냐면, Lambda는 요청 건 수 당 비용이 발생하는 과금 정책을 가지고 있고, 때문에 의도하지 않은 요청이 두번/세번 더 들어가면, 비용이 불필요하게 두배/세배 늘어날 수 있으니까.

 

현업에서는 이런 문제를 해결하기 위해서, Exception 객체를 Lambda 밖으로 나가지 않도록 했다.

(원래는 Exception이 발생되어서 응답이 나가도록 했었는데, 그 이유는, 기존 대부분의 Lambda로 들어오는 요청은 API Gateway를 통해서 왔었다. 그리고 API Gateway 기능 중에는 Lambda에서 발생한 Exception을 우리가 정하는 규칙에 따라 json 형태로 응답이 나가도록 만들어주는 것이 있다.)

 

결과적으로, Exception과 관련한 처리는 Lambda 위에 올라가는 코드에서 다 처리되어, json과 같은 메세지 응답이 나가는 것이다(Exception 객체가 아닌).

 

혹은 다른 방법으로는 DLQ를 활용하는 것인데, DLQ는 Lambda에서 발생한 에러를 모아두는 Queue라고 생각하면 된다.

거기에 모인 에러(Exception 객체)를 보고, 종류에 따라 Retry를 할지 아니면 무시할지 결정해서 핸들링하는 방식도 있다.

 

반응형

댓글