AWS S3 이미지 파일 리사이징 업로드
REST API 호출시 이미지 파일 S3로 업로드 및 S3 업로드 시 트리거를 통해 Lambda 동작하여 리사이징된 이미지 파일 다른 S3 업로드 해보기
구성 Skill : Spring Boot + Lambda + S3
1. S3 원본 이미지 버킷과 리사이징 이미지 버킷 생성
업로드되는 이미지 버킷과 리사이징된 이미지 버킷을 생성
이미지 업로드를 위해 퍼블릭 액세스 차단 설정을 전부 해제
버킷 정책 설정으로 필요한 Get, Put 등 설정해둔다.
2. IAM 사용자 추가 및 S3 사용 권한 부여
사용자 생성
사용자에 AmazonS3FullAccesss 권한 정책 설정
Spring Service 단에서 접근할 수 있도록 사용자의 액세스 키 생성
생성된 액세스 키(Access-Key)와 비밀 액세스키(Secret-Key)는 별도의 파일로 가지고 있고 잃어버리지 말자.
3. Java Controller, Lambda 소스 및 빌드
Package 구성
Build.gradle 구성
Gradle AWS SDK for java dependency
https://docs.aws.amazon.com/ko_kr/sdk-for-java/v1/developer-guide/setup-project-gradle.html
AWS 기반 Spring Boot 애플리케이션 구성
https://aws.amazon.com/ko/blogs/korea/getting-started-with-spring-boot-on-aws/
application.yml 구성
AwsS3Config.java
S3 Bean 생성
AwsS3Controller.java
AwsS3Service.java
S3ImgHandler.java
리사이징 Lambda 소스
4. Lambda 트리거 구성
s3-lambda-role 이라는 새로운 역할 생성
역할 생성 시 권한 정책
런타임 설정 편집
패키지.클래스명::핸들러명
Lambda소스가 있는 빌드된 zip 파일 bucket에 업로드
Lambda - S3 트리거 설정하여 Event 동작하도록하기.
5. AWS Lambda 원본 저장, 리사이징 저장 처리 결과
예외로 Lambda에서 S3 액세스 거부 (403) 에러가 발생하는 경우
s3:PutObjectACL 권한 정책 부여하여 해결
참고
: https://repost.aws/ko/knowledge-center/access-denied-lambda-s3-bucket
'Cloud > Amazon Web Service' 카테고리의 다른 글
AWS Lambda(Serverless) API 서버 구축해보기 (1) | 2023.11.26 |
---|