S3 (Simple Storage Service)
- 안전하고 가변적인 object(이미지, 동영상, 파일 등) 저장공간 제공
- 파일 크기 0KB ~ 5TB까지 지원
- 저장공간 무제한
- Bucket이라는 이름 사용(디렉토리와 유사, 보편적인 namespace 사용)
S3 object 구성요소
- key (파일명)
- value (파일의 데이터)
- version ID (똑같은 파일의 다른 버전 가능)
- metadata
- CORS(Corss Origin Resource Sharing) - 한 bucket의 파일을 다른 bucket에서 접근가능하도록 해주는 기능
S3 Data Consistency Model
- Read after Write Consistency (PUT) - 즉시 사용 가능
- Eventual Consistency (UPDATE, DELETE)
S3 스토리지
- 일반 S3
- 가장 보편적으로 사용되는 스토리지 타입
- 높은 내구성, 가용성
- S3 - IA (Infrequent Access)
- 자주 접근되지는 않으나 접근 시 빠른 접근이 요구되는 파일이 많을시 유용
- 멀티 AZ를 통한 데이터 저장
- S3 - One Zone IA
- 단일 AZ를 통한 데이터 저장
- 단일 AZ에 의한 데이터 접근 제한 (조금 낮은 가용성)
- Glacier
- 거의 접근하지 않을 데이터 저장 시 유용
- 매우 저렴한 비용
- 데이터 접근시 대략 4-5시간 소요
- Intelligent Tiering
- 데이터 접근 주기가 불규칙할 때 매우 유용
- 2가지 티어 존재 (Frequent Tier, Infrequent Tier) -> 데이터 접근주기에 따라 두 가지 티어 중 하나로 선택됨
- 최고의 비용 절감 효율을 누릴 수 있음
S3 사용 용례
-
파일 저장소 (로그, 이미지, 비디오, 압축파일 등 다양한 파일들)
-
웹사이트 호스팅 (html, css, js 등 업로드)
-
CORS
최초 S3 버켓 생성시 -> 비공개이므로
1. 버켓 정책 변경 (Bucket Policy) : 버켓 안에 들어있는 모든 파일들에 적용
2. 접근 제어 리스트 변경 (Access Control List) : 파일 하나하나에 다른 접근 부여 가능
S3 암호화
- 파일 업로드/다운로드 시 : SSL / TLS - AWS 내부에서 관리
- 가만히 있을 시 :
- SSE-S3 - 마스터 키 일정 시간마다 변경
- SSE-KMS - 누가 언제 어떻게 암호를 변경하였는지에 대한 기능 있음
- SSE-C
S3 암호화 과정
- PUT 요청이 생성됨
- PUT 요청 헤더에 x-amz-server-side-encryption-parameter(암호화 알고리즘 지정)가 있으면 암호화 요청으로 간주
- 암호화가 걸리지 않은 파일을 버켓에 못 올리게 하려면 버켓 정책 변경을 통해 이 값이 헤더에 들어있지 않다면 reject 하도록 설정
CloudFront
- Edge Location을 사용하여 정적, 동적, 실시간 웹사이트 콘텐츠를 유저들에게 전달
- Content Delievery Network(CDN) -> 속도 향상
- 분산 네트워크 (Distributed Network)
- 웹페이지를 불러오려는 사용자가 어디에 위치하느냐에 따라 Content web page에 delivery하는 분산 네트워크
용어
- Edge Location(엣지 지역) : 콘텐츠들이 캐시에 보관되는 장소
- Origin : 원래 콘텐츠들이 들어있는 곳, 웹 서버 호스팅이 되는 곳 / S3, EC2 인스턴스가 오리진이 될 수 있음
- Distribution(분산) : CDN에서 사용되며 Edge Location들을 묶고 있다는 개념