Spring-boot & AWS S3 연동 이미지 업로드 - (1)

2024. 4. 25. 17:36스프링

S3 란?

AWS(아마존 웹 서비스)가 제공하는 클라우드 스토리지 서비스이다. 다양한 유형의 미디어(파일, 데이터 등)를 저장하고 관리하는데 사용되는 웹 기반 스토리지 시스템이다. 저장하는 데이터 양에 대한 비용이 저렴하고, 저장할 수 있는 데이터의 양도 굉장히 많다고 한다.

 

스프링 부트와 Amazon S3 연동 

프로젝트 진행을 하다가 사용자의 프로필 사진을 저장하는 기능을 구현 하는데에 있어서 사용자가 많아질 경우를 가정해 많은 이미지를 저장을 해도 비용이 저렴하게 나오는 S3를 사용하려고 한다. 

 

S3 버킷 생성

Amazon S3 버킷

오른쪽에 보이는 '버킷 만들기' 버튼을 눌러 생성을 시작해준다.

'버킷 이름' 칸에 자신이 짓고자 하는 버킷 이름을 적어준다.

객체 소유권은 한 계정에서 관리하기 위해 'ACL 비활성화됨(권장)'을 선택한다.

해당 버킷을 같은 팀원도 각자 환경에서 해당 버킷에 접근을 해야하기 때문에 모든 퍼블릭 액세스 차단을 풀어주었다.

버킷 버전 관리는 비용을 최소화 하기 위해 비활성화로 해준다. 

활성화를 시키면 버전을 관리해주고, 의도하지 않은 작업 시에 복구를 시켜줄 수 있다고 한다. 

기본 암호화를 활성화 하면 버킷에 저장되는 모든 새 객체를 암호화해서 저장하고, 객체를 다운로드 할 때 복호화를 해서 제공해준다.

마지막으로 버킷 만들기 버튼을 눌러주고 버킷을 생성하면

 

버킷이 잘 생성 된 것을 볼 수 있다.

 

하지만 버킷을 생성만 한다고 연결을 할 수 있는 것이 아니다.

버킷의 정책을 따로 설정을 해줘야 한다.

 

버킷 정책 설정

버킷 이름(나는 kinjinyong)을 눌러주고 권한 페이지로 가준다.

권한 페이지

버킷 정책의 편집 버튼을 눌러주고, 해당 페이지에서 정책 생성기 버튼을 눌러준다.

그럼 해당 페이지가 뜰 것이다.

해당 페이지에서 양식대로 입력을 해줘야 한다.

Select Type of Policy: S3Bucket Policy 선택

Principal: * 입력

Actions: Get object, Put object 선택

Amazon Resource Name (ARN): arn:aws:s3:::(버킷 이름)/* 입력   -> 나는 arn:aws:s3:::kinjinyong/*

Add Statement 버튼을 누르면

자신이 설정 한 정책이 나오게 된다. 맞는지 확인 한 후, Generate Policy 버튼을 눌러준다. 그러면

해당 Json 형태의 코드가 나오고 복사하여서

붙여넣기 해준 후, 변경사항 저장을 해준다.

그러면 해당 화면처럼 '퍼블릭 액세스 가능' 상태로 뜨게 된다. 이제 Spring-Boot와 연동을 본격적으로 해보자.

 

 

참고 블로그

https://bigco-growth-diary.tistory.com/43 - S3 란?

https://celdan.tistory.com/36 - 정책 설정

 

'스프링' 카테고리의 다른 글

Spring-boot & AWS S3 연동 이미지 업로드 - (2)  (0) 2024.04.28