S3(Simple Storage Service)
- 안전하고 가변적인 Object 저장공간을 제공(ex : Google Cloud) 이미지, 동영상 등 업로드
- 편리한 UI 인터페이스를 통해 어디서나 쉽게 데이터를 저장하고 불러올 수 있다.
- 파일 크기는 0KB부터 5TB까지 지원
- 저장공간 무제한
- Bucket이라는 이름을 사용함(디렉토리와 유사)
- Bucket은 보편적인 namespace를 사용함(Bucket 이름은 고유해야 한다)
S3 Object 구성요소
- key (ex.파일명)
- value (ex.파일에 대한 데이터)
- Version ID (S3 고유 특징, 똑같은 파일인데 다른 버전으로 올릴 수 있는, 이전으로 돌아가기 가능)
- Metadata (데이터의 데이터, 언제파일이 업로드 되었는지)
- CORS(Cross Origin Resource Sharing) - 한 Bucket의 파일을 다른 Bucket에서 접근 가능하도록 해주는 기능, 지역 무시
S3 Data Consistency Model
1. Read after Write Consistency(PUT)
- S3 Bucket에 파일을 올릴 때 PUT을 사용
- 파일이 S3 Bucket에 올려지면 바로 사용 가능
2. Eventual Consistency(UPDATE, DELETE)
- UPDATE, DELETE를 사용하여 Bucket에 올라가져 있는 파일을 변경하거나 삭제시 그 결과가 바로 나타나지 않는다.
S3 스토리지 종류
1. 일반 S3
- 가장 보편적으로 사용되는 스토리지 타입
- 높은 내구성, 가용성(Durability, Availability) - 얼마나 데이터의 손실이 없이 잘 보관되는지, 얼마나 데이터 접근이 용이 하는지
2. S3- IA(Infrequent Access)
- 자주 접근되지는 않으나 접근시 빠른 접근이 요구되는 파일이 많을시 유용
- 일반 S3에 비해 비용은 저렴하나 접근시 추가 비용 발생
- 멀티 AZ를 통한 데이터 저장 (가용성이 높다)
3. S3- One Zone IA
- 단일 AZ를 통한 데이터 저장
- 단일 AZ에 의한 데이터 접근 제한(조금 낮은 가용성)
- 데이터 접근시 S3 - IA보다 20% 비용 저럼
Glacier
- 거의 접근하지 않을 데이터 저장 시 유용
- 매우 저렴한 비용
- 데이터 접근시 대략 4-5시간 소요
Intelligent Tiering
- 데이터 접근 주기가 불규칙할때 매우 유용
- 2가지 티어 존재
- Frequent Tier -자주 발생시
- Infrequent Tier - 드문 경우
- 데이터 접근주기에 따라 두가지 티어중 하나로 선택됨
- Frequent Tier가 비용이 약간 더 비쌈
- 최고의 비용 절감 효율을 누릴 수 있음
Bucket 생성시 알아야 할 것들
- 버켓 정책 변경 - Public으로 변경
- 접근 제어 리스트 변경 - 파일마다 접근 제어(사람마다 접근할 수 있는 파일이 다름)
S3 암호화
- 파일 업로드/다운로드시
- 가만히 있을시
- SEE-S3 - 마스터키를 가지고 있으며, 일정 시간마다 키값을 변경시킨다.
- SSE-KMS - 누가 언제 어떻게 암호를 풀었는지 기록이 남는다.
- SSE-C - 암호키를 직접 다룰 수 있으며, 키값을 직접 변경시켜야 한다.
x-amz-server-side-encryption-parameter 헤더가 추가 되어있다면
- 암호화 요청을 한것으로 간주하고 암호화를 걸어준다.
암호화가 걸리지 않은 파일을 버켓에 못올리게 하는 기능은?
x-amz-server-side-encryption-parameter 헤더가 없다면 Bucket은 요청을 reject하게 됨
같은 버킷에서 똑같은 파일을 업로드 한다면 파일이 덮어 씌어지는게 아니라, 다른 버전으로 관리(활성화)
https://www.inflearn.com/course/aws-%EC%9E%85%EB%AC%B8/dashboard