S3( Simple Storage Service )
- 안전하고 가변적인 Object 저장공간을 제공 (ex: Google Cloud)
- 편리한 UI 인터페이스를 통해 어디서나 쉽게 데이터를 저장하고 불러올 수 있습니다.
- 파일 크기는 0KB부터 5TB까지 지원
- 저장공간 무제한
- Bucket이라는 이름을 사용함(디렉토리와 유사함)
- Bucket은 보편적인 namespace를 사용함
S3 Object 구성 요소
- Key
- Value
- Version ID
- Metadata
- CORS
S3 Data Consistency Model
1. Read after Write Consistency (PUT)
S3 bucket에 파일을 올릴때 put을 사용합니다. 파일을 올릴시 우리는 바로 사용할 수 있습니다.
2. Eventual Consistency (UPDATE, DELETE)
S3 bucket에 파일을 수정할 때 사용하고 그 결과가 바로 나타나지는 않습니다.
다양한 S3 스토리지 타입
- 일반 S3
- S3 - IA (Infreguent Access)
- S3 - One Zone IA
- Glacier
- Intelligent Tiering
일반 S3
- 가장 보편적으로 사용되는 타입
- 높은 내구성, 가용성 (Durability, Availability)
내구성: 얼마나 데이터의 손실이 없이 잘 보관 되어지는지
가용성: 얼마나 데이터 접근이 용이한지
S3 - IA (Infrequent Access)
- 자주 접근되지는 않으나 빠른 접근이 요구되는 파일이 많을시 유용
- 일반 S3에 비해 비용은 저렴하나 접근시 추가 비용 발생
- 멀티 AZ를 통해 데이터 저장
S3 - One Zone IA
- 단일 AZ(Availability Zone)를 통한 데이터 저장
- 단일 AZ에 의한 데이터 접근 제한 (조금 낮은 가용성)
- 데이터 접근시 S3 - IA 보다 20% 비용 저렴
Glacier
- 거의 접근하지 않을 데이터 저장 시 유용
- 매우 저렴한 비용
- 데이터 접근시 대략 4-5시간 소요
Intelligent Tiering
- 데이터 접근 주기가 불규칙할 때 매우 유용
- 2가지 티어 존재
- Frequent Tier
- Infrequent Tier
- 데이터 접근주기에 따라 두가지 티어중 하나로 선택됨
- Frequent Tier가 비용이 약간 더 비쌈
- 최고의 비용 절감 효율을 누릴 수 있음
암호화
[1] 파일 업로드/다운로드 시
- SSL / TLS
aws 내부에서 모든 것을 관리해줍니다.
[2] 가만히 있을시
1. SEE-S3: 기본적으로 S3 bucket에 저장되어 있는 모든 object들은 그들만의 고유 키를 가지고 있습니다. SEE-S3는 마스터 키를 가지고 있으며 특정 시간마다 키 값을 변경시킵니다. 참고로 마스터키가 생성한 키 값은 AES-256 bit로 구성되어 있습니다.
2. SSE-KMS: SSE-KMS암호화 키는 누가 언제 어떻게 암호를 풀었는지 알 수 있습니다.
3. SSE-C: 우리가 암호키를 직접 다룰 수 있으며 키 값을 변경 시켜주어야 합니다.
S3 암호화 과정
- Put 요청이 생성됨
Host: bucket의 이름
Date: 언제 요청이 되었는지
x-amz-server-side-encryption-paramerer
만약 우리가 파일을 S3에 업로드 할 시 put요청에 이것이 들어 있다면 S3는 우리가 암호화 요청을 건 것으로 간주하고 암호화를 걸어줍니다.
https://developer.mozilla.org/ko/docs/Web/HTTP/Headers/Authorization