AWS 기초이론 - S3
1. S3란?
- Simple Storage Service
- 안전하고 가변적인 Object 저장공간을 제공 -> ex. 구글 클라우드
- 편리한 UI 인터페이스를 통해 어디서나 쉽게 데이터를 저장하고 불러올 수 있음
- 파일 크기는 0KB부터 5TB까지 지원
- 저장공간 무제한 제공
- 디렉토리와 비슷한 개념인 Bucket이라는 이름을 사용
- Bucket은 보편적인 namespace를 사용 -> 지역에 관계없이 Bucket 이름은 고유해야 한다는 의미
2. S3 Object 구성요소
- Key value 형태
- Version ID -> S3 고유 특징으로 같은 파일이지만 다른 버전으로 업로드 가능
- Metadata : 데이터의 데이터란 의미
- 언제 업로드, 어떤 팀이 오너인지 등등의 기타 정보들
- CORS(Cross Origin Resource Sharing) : 한 Bucket의 파일은 다른 Buecket에서 접근 가능하게 하는 기능
3. S3 Data Consistency Model
- Read after Write Consistency (PUT)
- S3 Bucket에 파일을 올릴 때 PUT을 사용
- Eventual Consistency(UPDATE, DELETE)
- Bucket에 올라간 파일 내용을 변경하거나 삭제할 시 바로 나타나지 않음 -> 육안으로 보기에는 그래도 S3 내부에서는 그렇지 않음
4. S3 스토리지
일반 S3
- 가장 보편적으로 사용되는 스토리지 타입
- 높은 내구성, 가용성
S3 - IA(Infrequent Access)
- 자주 접근되지 않으나 접근시 빠른 접근이 요구되는 파일이 많을시 유용
- 일반 S3에 비해 비용은 저렴하나 접근시 추가 비용 발생
- 멀티 AZ를 통한 데이터 저장 -> 가용성 높음
S3 - One Zone IA
- 단인 AZ를 통한 데이터 저장 -> 서버 다운되면 사용 불가능
- 단일 AZ에 의한 데이터 접근 제한 (조금 낮은 가용성)
- 데이터 접근시 S3 - IA 보다 비용이 저렴
Glacier
- 거의 접근하지 않을 데이터 저장 시 유용
- 매우 저렴한 비용
- 데이터 접근시 대략 4-5시간 소요
Intelligent Tiering
- 데이터 접근 주기가 불규칙할 때 유용
- 2가지 티어 존재
- Frequent Tier
- Infrequent Tier
- 데이터 접근주기에 따라 두가지 티어중 하나로 자동 선택
- Frequent Tier가 약간 더 비쌈
- 최고의 비용 절감 효율을 누릴 수 있음
5. S3 요금
- GB당
- PUT, GET, COPY 요청 횟수당
- 데이터 다운로드시 / 다른 리소스로 전송시
- Metadata (object tag)
6. Bucket 생성 시 알아야할 것들
사용 용례
- 파일 저장소
- 로그, 다양한 파일들(이미지, 비디오, 압축파일 등)
- 웹사이트 호스팅
- html, css, js 같이 웹사이트를 돌리기 위한 파일들을 업로드한 뒤 S3를 실제 domain DNS로 사용 가능
- CORS - Cross Origin Resource Sharing
- Bucket A에서 Bucket B에 들어있는 데이터에 접근하는 것을 허용시켜주는 것
최초 S3 Bucket 생성시 비공개(Private) 상태
- 2가지 방법이 존재
- Bucket Policy : 버켓 정책 변경
- 버킷 안 모든 파일에 적용
- JSON 형태
- Access Control List : 접근 제어 리스트 변경
- 파일 하나하나에 다른 접근 권한 부여 가능
- Bucket Policy : 버켓 정책 변경
7. 암호화
2 가지 유형의 암호화 타입이 존재
- 파일 업로드/다운로드 시
- 직접 관리 필요 X -> AWS에서 직접 관리
- SSL/TLS 가 담당
- 가만히 있을시
- 기본적으로 S3에 저장되어있는 Object들은 각자 고유 키를 가지고 있음
- SEE-S3 : 마스터키(AES-256으로 구성)를 가지고 일정 시간마다 키값을 변경
- SEE-KMS : SEE-S3와 마찬가지고 AWS에서 직접 관리해주는 것 + 언제,누가,어떻게 암호를 풀었는지 정보 추가 저장
- SEE-C : 암호키를 사용자가 직접 다룰 수 있고 직접 키값 변경
암호화 과정
- S3 파일 업로드시 PUT 요청이 들어가면서 헤더에 위 그림과 같은 정보가 들어감
- 헤더에 x=amz-server-side-encryption-paramerer이 들어있다면 암호화요청을 건 것으로 간주하고 암호화 함