본문 바로가기
서버 개발 (AWS, Linux, DevOps)

AWS : Lambda 요청시 413 payload 에러 해결

by 번데기 개발자 2022. 9. 8.
반응형

최근에 Lambda를 통해 개발을 하였는데, 이를 개발할 때 여러 문제를 겪었는데요,

 

앞으로 Lambda를 실제로 사용하면서 사용하면서 발생하는 여러 가지 에러나 문제에 대해서 해결방법에 대해 포스팅할 예정입니다.

 

이번에 다뤄볼 주제는 AWS Lambda의 413 payload 에러입니다.

 

Lambda에 대해서 좀더 알고 싶으시면 아래 글을 참고해주세요.

 

AWS Lambda 기초 개념 및 간단 사용

 

413 payload 에러의 원인

 

413 payload에러는 보통 nginx나 nodejs와 같은 서버에서 request의 max-size를 선언한 뒤, 해당 크기를 초과하는 request가 요청으로 들어올 때 발생합니다.

 

{
    "message": "Request Too Long"
}

413 에러

 

 

Lambda의 request payload 제한

 

보통 AWS의 Lambda를 사용할 때 API Gateway와 같이 사용하는 경우가 많습니다.

 

AWS Lambda + API GateWay를 활용한 REST API 사용하기

 

기본적으로 Lambda에서는 payload를 6mb로 제한하고 있는데요, 이 때문에 Lambda를 API gateway로 호출 시 6mb 이상일 때 413 payload too large 에러가 발생하는 것입니다.

 

 

 

해결방법

 

제가 찾은 해결방법은 크게 2가지입니다.

 

방법 1) 요청 시 압축을 최대로 하여 Lambda로 전달되는 데이터(Invocation payload)가 6MB 제한을 초과하지 않도록 조정하기

 

방법 2) 데이터를 S3 버킷의 파일로 저장 후, 해당 S3 파일의 Key값을 Lambda로 전달하여 해당 값을 통해 S3파일의 데이터를 불러옴

  • API Gateway를 사용하지 않고 백엔드를 직접 구축한 경우 또는 Client에서 S3로 데이터를 바로 업로드할 수 있는 경우 위 방법을 사용할 수 있다.
  • 맨 처음 S3로 데이터를 업로드한다
  • 이후 S3 key값을 lambda의 payload로 전달하여 해당 key를 통해 S3 데이터를 수신한다.
  • 위 방법은 Lambda 내부에서 S3로 데이터를 요청하는 것이기 때문에 payload의 6mb 제한을 초과하지 않는다. 
  • Lambda 6mb 제한을 해결하기 위한 몇 가지 방법 => 해당 글의 방법 2번째 참고

 

 

마무리

 

AWS의 Lambda의 413 에러에 대해 알아보고 해당 부분에 대한 해결법을 알아보았습니다.

 

예전에는 Lambda라는 솔루션이 무거운 작업을 할 때만 사용된다라고 알고 있었는데, 무거운 작업을 처리하는 건 오히려 비효율적인 것 같습니다.  (비용, Ram 제한, Cold time, 실행 시간제한 등등의 이유) 

 

오히려 간단하게 API Gateway를 연동하여 빠르게 API 서비스를 구축하고, AWS 다른 서비스들의 Lambda Trigger들과 연동하여 작업을 serverless로 처리할 때 더 많이 사용하는 것 같습니다.

 

아직 Lambda에 대해 모르는 것들에 대해서는 조금씩 포스팅할 예정입니다. 

 

감사합니다.

반응형