S3 버킷에 PNG 형식의 이미지 파일을 업로드하면 지정된 크기의 썸네일 이미지를 자동으로 생성해서 저장하는 람다 함수를 구현해 봅니다.
썸네일 이미지 생성을 위해서는 Pillow 라이브러리(pillow.readthedocs.io/en/stable/)를 사용하며, 해당 라이브러리를 람다 실행 환경에 맞도록 컴파일하기 위해서 serverless-python-requirements 플러그인을 활용합니다.
Pillow 라이브러리
pillow.readthedocs.io/en/stable/
파이썬 이미징 라이브러리
여러 이미지 파일 포맷을 지원하고, 이미지 내부 데이터를 액세스할 수 있으며, 다양한 이미지 처리 기능을 제공
원본 이미지로부터 썸네일 생성, 포맷 변경, 프린팅, 크기 변경, 회원, 필터링 등 다양한 이미지 프로세싱이 가능
serverless-python-requirements 플러그인
www.serverless.com/plugins/serverless-python-requirements
람다 함수 배포 시 컴파일 환경과 실행 환경이 달라서 발생하는 문제를 해결하기 위한 플러그인
람다 함수가 실행되는 환경(운영체제)에서 컴파일을 지원 → 람다가 동작하는 운영체제 환경의 도커 이미지로 컨테이너를 생성하고 해당 컨테이너에서 컴파일 → PC에 도커가 설치되어 있어야 함
requirements.txt 파일을 통해서 패키지를 관리 → 배포를 위해서 serverless.yml, hander.py, requirements.txt 3개의 파일이 필요
플러그인 설치
serverless.yml 파일에 플러그인 추가
python-s3-thumbnail 파이썬 템플릿 서비스 생성
handler.py 작성
S3 버킷에 PNG 형식의 파일이 등록되면 해당 이미지의 썸네일을 생성해서 버킷에 저장
소스 코드에 한글이 포함된 경우 오류가 발생할 수 있으므로 배포 시에 한글 주석을 삭제하고 배포해야 함
serverless.yml 작성
requirements.txt 작성
배포
버킷 생성 확인
람다 함수 생성 확인
이미지 파일 업로드 시 썸네일 생성 확인
역활 생성 확인
로그 생성 확인
도커 이미지 생성 확인
'클라우드' 카테고리의 다른 글
Serverless Framework #5 람다 함수 실행에 필요한 환경변수 설정 (0) | 2020.11.07 |
---|---|
Serverless Framework #4 람다 함수 실행에 필요한 권한 설정 (0) | 2020.11.07 |
Serverless Framework #3 실행 환경 제한 설정 (0) | 2020.11.07 |
Serverless Framework #2 (0) | 2020.11.06 |
Serverless Framework #1 (0) | 2020.11.06 |
댓글