AWS Lambda로 썸네일 생성하기
Traditional way
- 상품이 연동되면 바로 썸네일을 만들어 S3에 올리는 방식.
- 히트율이 낮다면 불필요하게 공간을 차지할 수 있음.
- UI 개편으로 썸네일 크기가 변경되면 기존 썸네일을 모두 새로 생성해야 한다.
- 하지만 간단하게 구현할 수 있다.
Lambda@Edge
- 클라이언트가 요청하면 실시간으로 이미지를 리사이징해 제공하는 방식.
- cdn에 이미지가 캐싱되기 전에는 리사이징 딜레이가 발생. (100ms → 500ms 정도?)
- CloudFront의 origin-response와 viewer-request에 람다 함수를 연결한다.

- 클라이언트가 CloudFront에 이미지를 요청하면 CloudFront는 캐시된 썸네일이 있는지 체크한다.
- 썸네일이 있으면 그대로 응답하고, 없으면 S3에서 이미지를 가져와 리사이징한다.
- S3에 원본 이미지가 올라가 있어야 한다.
방금 갑자기 생각난 방법
- 사용자가 이미지를 요청하면 CloudFront는 캐시된 썸네일이 있는지 체크한다.
- 이미지가 있으면 그대로 응답, 없으면 S3에 해당 이미지가 있는지 확인한다.
- S3에 이미지가 있으면 리사이징해 응답하고, 없으면 S3에 등록한 뒤 리사이징해 응답한다.
- S3에 불필요한 이미지를 업로드하지 않으니까 비용 절감 효과가 있다.
- 히트율이 높으면 그다지 메리트는 없을 것 같다.
참고자료
- Jaiganesh Girinathan, “Resizing Images with Amazon CloudFront & Lambda@Edge”, AWS CDN Blog, 2018.
- seapy, “AWS Lambda를 이용한 이미지 썸네일 생성 개발 후기”, 당근마켓 팀블로그, 2016.
- Marco, “AWS Lambda@Edge에서 실시간 이미지 리사이즈 & WebP 형식으로 변환”, 당근마켓 팀블로그, 2019.
- Myung-Bo Kim, “서버 비용을 70%나 줄인 온디맨드 리사이징 이야기”, VCNC Engineering, 2016.
- Jinho Hong, “Lambda 한개로 만드는 On-demand Image Resizing”, Huiseoul Engineering, 2018.
- 최준승, “Lambda@Edge를 활용한 이미지 리사이즈 자동화”, WiseN, 2018.
이 문서를 인용한 문서