S3의 용도
- 백업 아카이브, 로그 파일 관리
- 분석을 위한 빅데이터 저장
- 정적 웹사이트 호스팅
메타 데이터
- S3에 파일을 쓸 때 최대 2KB 메타 데이터가 함께 저장됨
- 메타 데이터는 시스템 세부 정보를 구성하는 키로 생성됨
- 시스템 세부 정보: 데이터 사용 권한, 중첩 버킷 내 위치 정보 등
버킷 기본
- AWS 계정당 기본으로 만들 수 있는 버킷은 최대 100개
- 그 이상 필요한 경우, AWS에 할당량 요청 필요
- 각 버킷은 하나의 AWS 리전에만 존재
버킷 내부에서의 구분(접두사와 구분 기호)
- 기본적으로 버킷은 하위 폴더 구조가 없는 평면 구조
- 그러나, 일반 텍스트 문자열을 접두사로 사용해서 구조화된 수준 표현 가능
- example/a.txt, example/b.txt처럼 example + / 구조로 a.txt와 b.txt가 example이란 그룹에 같이 있는 것처럼 보이게 할 수 있음.
- 폴더 구조로 객체를 업로드하면 해당 구조를 S3가 자동적으로 계층을 만들어 저장함.
용량
- 이론적으로 버킷에 무한대 용량의 데이터 저장 가능
- 단일 객체 크기는 5TB를 넘어설 수 없음
- 한 번에 업로드할 수 있는 용량 크기는 최대 5GB
- 100MB보다 큰 객체는 멀티 파트 업로드를 권장
- 멀티 파트 업로드란?
- 큰 객체를 여러 작은 부분으로 나눠서 S3에 하나씩 전송
- 각 파트를 전송하다 실패하면 해당 파트만 다시 전송함
암호화
주로 서버측 암호화 사용
- 서버측 암호화(S3 플랫폼) 종류
- Amazon S3가 관리하는 암호화 키(SSE-S3)
- AWS KMS-관리형 키
- SSE-S3 기능에 더해 완벽한 키 사용 추적, 봉투 키 사용 가능
- KMS 서비스에 자체 키를 가져와서 사용 가능
- 고객 제공 암호화 키(SSE-C)
- 클라이언트측 암호화 종류
- AWS KMS-관리형 고객 마스터 키(KMS-CMK)
- S3 암호화 클라이언트에서 제공된 클라이언트 측 마스터 키 사용 가능
로깅
- S3 이벤트 추적을 로그 파일에 저장하는 기능은 처음에 비활성화되어 있음.
- S3 로그 항목
- 요청자 계정과 IP 주소
- 원본 버킷 이름
- 요청 동작(GET, PUT 등)
- 요청 개시 시간
- 응답 상태
내구성
- 대부분의 S3 클래스와 Amazon Glacier는 99.999999999% 내구성 보장
- 10,000,000개 객체에 대하여 1만년 동안 객체 1개가 손실될 확률
- S3는 최소 3개 가용 영역에 데이터를 자동으로 복제하여 높은 내구성 보장
- 복원력이 없는 스토리지 클래스
- Amazon S3 One Zone-IA
- RRS(Reduced Redundancy Storage)
- 다른 클래스보다 더 적은 영역에 복제 -> 99.99%의 내구성 보장
가용성
- 1년 동안 해당 객체를 요청했을 때 즉시 응답할 수 있는 기간을 백분율로 나타낸 것
- 예로, Standard 클래스는 연간 99.99% 기간을 보장 -> 중단 시간이 1년 동안 1시간 이내
- 한 해 동안 중단 시간이 가용성 기준을 넘게 된 경우 Amazon에 서비스 크레딧 요구 가능
- 클래스별 가용성
- S3 Standard, S3 Standard-IA, Reduced Redundancy - 99.9%
- S3 One Zone-IA - 99.5%
버전 관리
- 기본적으로, 새 파일을 기존 파일과 같은 위치, 같은 이름으로 저장한 경우 덮어쓰게 됨.
- 버킷 수준에서 버전 관리 활성화 시, 덮어쓴 이전 객체 보존 가능
- 아카이브가 증가하는 문제 감수 필요 -> 수명 주기 관리와 연관
수명 주기 관리
- 버킷에 수명 주기 규칙을 구성하므로써 지정한 기간이 경과했을 때 자동으로 객체가 다른 스토리지 클래스로 옮겨짐
- 예로, 새로운 객체는 첫 30일 동안 S3 클래스에서 보관 -> 30일이 지나면 더 저렴한 One Zone IA로 옮겨짐
- 접두사를 사용해 버킷 내 특정 객체에만 수명 주기 규칙 적용 가능
- S3 Standard -> Reduced Redundancy로 바로 전환은 불가능
액세스 제어
- ACL 규칙, S3 버킷 정책, IAM 정책 세가지 방식 제공
- Amazon에서는 ACL 대신 나머지 두개 정책 사용 권장
미리 서명된 URL(Presigned URL)
- 외부 액세스가 제한된 프라이빗 객체에 임시로 액세스할 수 있게 할 때 필요한 기능
- 미리 서명된 URL은 지정한 기간만 사용 가능
- 기본 만료값은 1시간
S3 Select/Glacier Select
- 전체 데이터가 아닌 일부분만 가져오고 싶을 때 사용하는 기능
- SQL과 유사한 쿼리로 저장된 객체에서 관련 데이터만 검색 가능
- 전체 데이터를 다운로드해서 발생하는 대역폭과 비용 절감 가능
Amazon Glacier
- 대부분의 S3 클래스와 마찬가지로 99.999999999% 내구성 보장
- S3 수명 주기 기능 사용 가능
- S3와 차이점
- 단일 객체 최대 크기 40TB(S3는 5TB)
- 아카이브에 대한 암호화가 기본(S3는 암호화를 선택해야 함)
- 데이터 다운로드 속도
- Glacier가 S3보다 데이터 다운로드 속도가 현저히 느림.
- Glacier의 목적: 데이터의 필요성과 사용 빈도는 낮지만 장기적으로 보관할 수 있는 저렴한 스토리지
- S3 버킷 개념 -> Glacier에서는 볼트로 사용
기타 스토리지 관련 서비스
- Amazon Elastic File System(EFS)
- 자동 확장 가능한 공유 파일 스토리지
- 여러 인스턴스가 짧은 지연 시간으로 안전하고 내구성 있게 파일을 공유 가능
- AWS Storage Gateway
- 온프레미스의 로컬 백업, 아카이브 운영 요구 사항을 클라우드 스토리지 서비스를 사용해 해결하려 할 때, 복잡해지는 구성을 해결하기 위함
- AWS Snowball
- 매우 큰 데이터(테라 또는 페타바이트 크기)를 S3 버킷에 올리려고 할 때 필요한 하드웨어 장치
출처: AWS 공인 솔루션스 아키텍트 스터디 가이드 - 어소시에이트 2/e