본문 바로가기
Skill Stacks/Java_Spring

AWS S3 스프링에 적용하기 - 1

by JayAlex07 2024. 5. 27.

 

AWS S3란?

- Amazon Simple Storage Service로 객체 스토리지 서비스이다.

- 업계 최고의 확장성, 데이터 가용성 및 보안과 성능을 제공한다.

- 사용자가 원하는 만큼의 데이터를 저장할 수 있기에, 다양한 타입의 데이터를 저장할 수 있다.

 

AWS S3를 프로젝트에서 사용

  • 데이터를 S3에 저장할 때에, 해당 데이터에 대한 S3 URI를 제공한다.
    • 예시) s3://master-car-application/de8265e3b2984913bbe01cd53733317f_1607146775.jpg
  • 위의 뒷부분은 객체의 key라고 볼 수 있다.
  • 해당 key를 통해 프로젝트에서 S3에 저장된 이미지를 찾을 수 있다.
  • 기본 로직 (DB에 저장)
    • 클라이언트에서 MultipartFile을 통해 파일을 가지고 온다
    • 해당 파일을 AWS S3 버킷에 저장을 한다
    • AWS S3에 저장되고, 제공 되는 URI를 DB에 저장을 한다
    • DB에 저장되면, 유저들을 해당 파일을 볼 수 있게 된다
  • 기본 로직 (DB에서 삭제)
    • DB에서 URI를 꺼낸다
    • 해당 URI에서의 제일 마지막 부분 (location)에서 객체에 대한 Key를 가지고 온다
    • 해당 Key를 통해, AWS S3 버킷 내의 객체를 찾을 수 있고, 해당 객체를 삭제를 한다 (삭제를 하면, 해당 객체는 사용할 수 없게 된다)
    • DB에서 저장한 URI를 삭제한다

 

AWS S3에서 버킷 생성하기

 

AWS S3 에서 버킷 만들기를 클릭한다

 

 

버킷 이름을 정한다 (버킷 이름 같은 경우 중복이 허용이 안 된다)

 

 

객체 소유권

- S3 버킷 내에 저장된 각 파일에 대한 소유자를 뜻한다 (생성한 AWS 계정)

- 프로젝트를 했을 때에는 ACL 활성화를 선택하고, 버킷 소유자 선호로 설정을 했다 (다른 IAM 계정을 사용했기 때문에)

 

 

이 버킷의 퍼블릭 액세스 차단 설정

- 버킷의 퍼블릭 액세스 차단 설정 경우, 모든 퍼블릭 엑세스를 차단할 경우 다른 사람들이 객체에 접근을 할 수 없다

- 프로젝트에서는 사용자 프로필 이미지를 버킷에 올려, 일반 사용자들이 볼 수 있도록 만들어야 하기 때문에, 모든 퍼블릭 액세스 차단을 하지 않았다

 

 

버킷 버전 관리

- 객체마다 버전을 동일한 버킷에서 관리를 한다

- 활성화 했을 경우, 객체를 삭제했을 경우, 이전 버전이 남게 된다 (저장 공간을 더 사용하게 된다)

 

 

기본 암호화

- S3에 저장되는 모든 데이터는, 암호화가 된다

 

버킷을 생성 후

- 만든 버킷에 들어가기 -> 권한 -> 버킷 정책에서 편집을 하기

 

Version : 정책 버전

Statement : 하나 이상의 정책 선언

Sid : 특정 Statement에 대한 식별자

Effect : 규칙이 조건에 대해 허가/거부인지 명시

Principal : 정책이 적용되는 사용자의 범위

Action : 정책이 적용되는 범위

Resource : 정책에 적용되는 리소스 지정 (빨간 부분에 버킷 이름을 넣으면 된다)

'Skill Stacks > Java_Spring' 카테고리의 다른 글

AWS S3 스프링에 적용하기 - 2  (0) 2024.05.27
스프링 회원기능  (1) 2023.11.17
[Java] 오늘 배운 것 20231025  (0) 2023.10.25
[Java] Nginx  (0) 2023.09.14
[Java] Kafka  (0) 2023.09.13