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 |