Java AWS Lambda S3 Image Resize

프로젝트 진행중 다양한 이미지 리사이징이 필요하게 되었다.

이미지는 AWS S3에 업로드되어지고 Cloudfront로 서비스 되어진다.

요구사항중 이미지 리사이징 되는 대상은 상품이미지이다.

상품이미지에 대해서는 S3 버킷으로 구분이 되어지고

해당 버킷의 create object event에만 lambda trigger를 걸면 되겠다고 생각했다.

aws lambda관련 자바로된 이미지 리사이징 소스를 찾아보니.

많지 않다.

작성한 java aws lambda imageResize github 을 남긴다.

추가 20170705

어플리케이션 단에서 S3로 이미지 업로드 후

aws lambda 를 통해 리사이징된 이미지를 cloudfront를 통해 서비스할때.

lambda function을 통해 리사이징 되는 시점 차이로 인해
cloudfront에서 404가 발생한다.
오류 케이스의 케시응답은 minimum TTL로 케시응답이 이루어지는데.
조정하지 않는 이상은 최초 404 응답 이후로 기본TTL 5분동안 404를 보게된다.

케이스에 대한 페이지를 구성하여 하는 방법이 있을것도 같은데.
현재 나의 여건상 에러페이지 구성은 할 수 없기 때문에 다른 방법을 생각했다.

단순하게 생각하여 , 기본 흐름안에서 생각한다면.
S3이미지 업로드 하는 로직에서 lambda function을 호출하면 되었다.

내가 개발하는 프로젝트는 화면에서 ajax multipart로 이미지 파일이 같이 넘어오면 S3로 올리는데 , 올린이후 lambda function을 실행하고 실행결과 응답을 받은 후 , 백엔드 로직이 종료되면 transaction도 commit될 테고
S3에 리사이징된 이미지가 올라간 상태에서 리소스 접근이 가능해진다.

단순히 s3 trigger를 통해 비동기로 실행되던 lambda function을
서비스 레이어로 갖고와서 동기로 실행하는 것으로 요약할수 있겠다.

Image for post
Image for post

엘디는 사랑입니다.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store