[AWS] S3

2025. 8. 3. 23:05카테고리 없음

AWS S3

S3는 AWS에서 제공해주는 파일을 업로드하고 다운로드하는 스토리지 역할에 특화된 서비스

S3는 분산된 스토리지를 사용하며 S3를 사용하는 클라이언트가 원하는 만큼의 용량을 제공해줌

 

이점

1. 높은 내구성과 가용성

S3는 분산된 환경에 다중 복제를 해서 저장하기 때문에 어느 한 영역이 다운되더라도 데이터를 사용할 수 있으며, 복구 가능.

 

2. 확장성

파일 서버는 트래픽이 증가함에 따라 서버 인프라 및 용량 계획을 변경해야 되는데, S3는 내부적으로 스토리지에 대한 오토 스케일링(부족하면 늘리고 남아돌면 줄임)을 할 수 있기에 확장 및 성능 부분을 대신 처리해줌

 

3. 보안

S3는 자체적인 암호화 기능, 접근 허용 목록 등 강력한 보안기능을 제공. 따라서 편하게 업로드 한 리소스에 대한 접근을 제어 가능

 

 

AWS S3 설정

 

 

버킷 생성

AWS 콘솔에서 버킷을 생성해줍니다.

버킷 이름을 입력해주고 퍼블릭으로 설정하기 위해 엑세스 차단 설정을 해제해줍니다.

나머지는 건들지말고 버킷을 생성해줍니다.

 

버킷이 생성된걸 확인할 수 있습니다.

 

 

폴더 생성

실제 프로젝트에서 파일을 업로드 하는 상황이 여러가지가 존재할 수 있습니다.

ex) 프로필 사진 업로드, 리뷰 사진 업로드, 펀딩 사진 업로드, 프로젝트 사진 업로드 등등

즉, 각각에 대해서 컴퓨터의 파일을 정리하는 것과 비슷하게 파일을 만들어서 저장하면 관리가 더욱 용이해짐

 

 

폴더 이름은 사진이 지정해주면 됩니다.

(저는 펀딩 사진을 저장해줄것이기에 funding 폴더를 만듬)

 

 

 

사용자 생성

S3에 접근하기 위해서는 IAM 사용자에게 S3 접근 권한을 주고, 엑세스 키와 비밀 엑세스 키를 만들어 이를 통해 접근해야함.

-> 접근 권한이 있는 사용자를 생성하고, 엑세스 키와 비밀 키를 발급받는 과정을 진행해주면 됩니다.

AWS console → IAM → 액세스 관리 → 사용자 → 사용자 추가

사용자 이름을 입력하고 직접 정책 연결하여 AmazonS3FullAccess 권한을 선택해줍니다.

 

사용자를 생성하고 난 후, 생성한 사용자의 보안 자격 증명에서 엑세스 키를 생성해줍니다.

사용할 사례에 맞게 선택하면 됩니다.

저는 스프링 레거시를 사용할 예정이기에 AWS 외부에서 실행되는 애플리케이션을 선택해주었습니다.

 

엑세스키 생성 완료 화면에서 생성된 공개키와 비밀키가 확인 가능합니다.

-> 추후에 해당 키값을 사용해야하기 때문에 .csv파일로 저장하거나 복사해서 따로 저장해둬야 합니다.

 

 

Spring legacy 설정

Spring legacy는 spring-cloud-starter-aws같은 자동 설정 라이브러리를 사용하지 않기 때문에, AWS SDK for Java를 직접 추가해줘야함. 

implementation 'com.amazonaws:aws-java-sdk-s3:1.12.687'
implementation 'com.amazonaws:aws-java-sdk-core:1.12.687'

 

 

다음으로 S3 config를 작성해줍니다.

 

service단과 controller단도 작성해줍니다.