AWS CDN 기반 OAC를 이용한 이미지 자동 리사이즈 딜리버리 서비스
.
├── app/ # 애플리케이션 소스 코드
│ ├── generator/ # 이미지 생성 Lambda 함수
│ ├── redirector/ # 리다이렉션 처리 Lambda 함수
│ └── index.html # 기본 HTML 파일
├── infra/ # 인프라스트럭처 코드 (Terraform)
│ ├── builds/ # 빌드 아티팩트
│ ├── *.tf # Terraform 설정 파일들
│ └── terraform.*.plan # Terraform 실행 계획
└── package.json # 프로젝트 의존성 및 스크립트- CloudFront: 전 세계 사용자에게 빠르게 콘텐츠를 전송(Delivery)하기 위한 CDN 서비스입니다.
viewer-request단계에서 CloudFront Function (redirector) 을 실행하여 보안 키 검증 및 동적 URL 재작성을 수행합니다. - S3 Object Lambda (generator): CloudFront가 오리진에서 이미지를 가져올 때, 중간에서 요청을 가로채어 실시간으로 이미지 크기를 조정(Resize)하거나 최적화하는 서버리스 함수입니다.
- S3 (Storage): 원본 이미지가 저장되는 콘텐츠 저장소입니다. 대상 객체는 Object Lambda를 통해 가공되어 제공됩니다.
- OAC (Origin Access Control): CloudFront에서만 S3 및 Object Lambda에 안전하게 접근할 수 있도록 보안을 강화하는 구성 모델입니다.
- Route53: 도메인(DNS) 호스팅 및 인증서를 관리하고 적용합니다.
현재 전체 앱(Lambda 소스코드 빌드 및 Terraform 설정)은 정상 배포 가능한 상태(Ready for Deployment) 임이 확인되었습니다.
app/redirector: 의존성 무결성 및 빌드가 성공적으로 동작합니다 (npm run build).app/generator: 의존성 무결성 및 Typescript ESBuild가 성공적으로 동작합니다.infra: Terraform 구성 파일이 최신 버전 프로바이더와 호환되며 문법적인 오류가 없는 상태(terraform validate구문 체크 통과)입니다.
# 의존성 설치
npm install
# 개발 환경 변수 설정
cp .env.example .env# Generator 함수 빌드
cd app/generator
npm run build
# Redirector 함수 빌드
cd app/redirector
npm run buildterraform을 사용하여 배포합니다.
# 개발 환경 배포
terraform apply -var="environment=dev"
# 프로덕션 환경 배포
terraform apply -var="environment=prod"# prod
# dev