: 데이터 저장, 엑세스, 보호 및 분석 기능을 갖춘 Amazon의 서비스
Block Storage
• 데이터를 일정 크기의 블록으로 나누어 저장
• 각 블록은 독립적인 주소를 가지며 이를 통해 랜덤 엑세스 가능
• Storage Area Network(SAN): 고성능의 전용 네트워크. 서버와 데이터 스토리지 시스템을 연결
• 빠른 입출력(I/O) 속도가 필요한 데이터베이스에 적합
• 높은 IOPS(초당 입출력 작업 수)와 낮은 지연 시간이 중요한 경우에 선택
• 운영 체제 또는 중요한 애플리케이션을 실행하는 데 사용됨
File Storage
• 데이터를 파일로 저장, 파일들은 폴더나 디렉토리에 조직
• 계층적인 파일 시스템 구조를 가짐
• Network Attached Storage(NAS): 네트워크에 연결돼 여러 사용자와 장치가 파일 기반의 데이터에 접근할 수 있게 해주는 전용 파일 스토리지
• 여러 서버나 사용자가 동일한 파일 시스템에 동시에 액세스해야 할 때 적합
• 파일과 디렉토리를 통해 데이터를 관리하고 싶을 때 유용
• 네트워크를 통한 파일 공유가 필요한 경우에 적합
usecase: 백업 및 스토리지, 재해 복구, 아카이브, 하이브리드 클라우드 스토리지, 애플리케이션 스토리지, 미디어 호스팅, 데이터 레이크 및 대규모 데이터 분석, 소프트웨어 배포, 정적 웹사이트 호스팅
Access 제어
객체 별 ACL을 통해 데이터에 접근 가능한 사용자 특정이 가능
(ACL: Access Control List)
데이터 저장
데이터는 객체 단위로 저장
내구성
99.999999999%의 내구성
데이터 저장 용량
Standard의 경우 객체 하나의 크기는 최대 5TB까지
Bucket
- S3에 객체를 저장하게 해주는 시스템
- AWS 전역에서 단 한개만 존재: 리전과 관계 없이 전역적으로 Unique한 이름이 필요
- 리전 수준에서 정의: 데이터 저장 위치와 관련된 법률 및 규정 준수에 영향
Object
- 객체는 보통 파일을 의미 (img, html,.. )
- 객체는 키를 가짐 (키는 파일의 전체 경로)
- 객체 최대 크기는 5TB
- 한번에 5GB이상 업로드 불가능
버킷의 버전 관리를 활성화하여 여러 버전의 객체 보관 가능
실수로 삭제되거나 덮어써진 객체 복원 가능
한번 활성화하면 비활성화 불가. 대신 중단 상태로 전환 가능
서버 측 암호화(SSE)
SSE-S3 (Server-Side Encryption with Amazon S3- Managed Key) :
각 객체마다 고유한 키를 사용하고, 추가 보안을 위해 이 키를 다른 마스터 키로 정기적으로 암호화.
사용자는 키 관리에 대해 걱정할 필요 없이 S3 에 의해 자동으로 처리됨. (default)
SSE-KMS (Server-Side Encryption with AWS Key Management Service) :
사용자가 키의 사용을 제어하고 접근을 감사할 수 있음. 또한, 사용자 정의 키 관리 및 암호화 키의 로테이션을 지원.
KMS-api 사용하므로 KMS 제한 사항에 영향을 받을 수 있음
SSE-C (Server-Side Encryption with Customer- Provided Keys) :
데이터를 업로드하거나 다운로드할 때마다 사용자는 자신의 암호화 키를 제공해야 함. 이 방법은 키 관리의 책임이 사용자에게 있음.
AWS로 키를 보내기 때문에 서버측 암호화 HTTP 요청마다 키를 헤더 제공해야하고, HTTPS 사용 필수
클라이언트 측 암호화 (CSE)
S3 버킷에 있는 파일을 이용해 정적 웹사이트 호스팅 가능
CORS
요청 프로토콜의 일부로 다른 웹사이트에 요청을 보내야할 때 다른 오리진이 CORS Headers를 사용해서 요청을 허용하지 않는한 해당 요청은 이행되지 않음 (ex. Access-Control-Allow-Origin)
S3 CORS
S3에는 다양한 클래스가 존재 -> 내구성은 동일하지만 가용성이 클래스마다 다름
수명 주기 규칙은 크게 전환(Transition), 만료(Expiration) 작업으로 구성 (기간 설정도 가능)
Content Delivery Network
지리적 제약 없이 전세계 사용자에게 빠르고 안전하게 콘텐츠를 전송할 수 있는 기술
사용자에게 더 가까운 지리적 위치에 콘텐츠를 저장하는 데이터 센터
(Cloudfront에는 300개 이상의 엣지 로케이션)
Regional Edge Caches (REC)
- 오리진과 엣지 로케이션 사이에 존재하는 캐시 계층
- 글로벌하게 배포되어있는 CloudFront 위치
- 리전 엣지 캐시는 표준 에지 로케이션에서 캐시하지 않는 콘텐츠를 저장
- 에지 로케이션에서 캐시 미스(cache miss)가 발생했을 때, 오리진 서버 대신 리전 엣지 캐시로부터 콘텐츠를 검색하여 더 빠른 응답 시간을 제공
Origin Shield (2020.10 릴리즈)
- 2020년 10월에 발표된 새로운 기능으로, CloudFront에서 캐싱 계층을 하나 더 추가하여 사용자(클라이언트)와 엣지 서버간의 거리를 줄이는 기능.
- 캐시 적중률을 높이고 오리진 서버의 부하를 줄여주어 로드 속도를 향상시키는 효과가 있다.
- AWS에서 제공하는 CDN (글로벌) 서비스
- Client의 콘텐츠 요청으로 서버에서 받아온 콘텐츠를 캐싱하고 이후 같은 요청이 왔을 때, 그 캐싱해 둔 것을 제공하는 서비스
- 성능 향상, 데이터 전송 속도 빨라짐, 보안성 향상, 안정성 및 가용성 향상
- Origin에서 HTTPS를 지원하지 않아도, CloudFront 내에서 HTTPS 통신 지원 가능
- Shield, AWS Web Application Firewall을 제공함으로써 DDoS로부터 보호 제공
- S3와 연동 시 => 캐싱을 지원하기 때문에 s3에 저장된 컨텐츠를 직접 접근하지 않아도 되므로 s3의 비용이 감소하며, 더 빠른 응답 지원
콘텐츠는 TTL 값 동안 Edge Location에 캐싱되어 낮은 지연시간으로 콘텐츠를 요청
- 목적:
캐시 정책은 CloudFront가 콘텐츠를 얼마나 오랫동안 캐시할 것인지, 어떤 HTTP 헤더, 쿼리 문자열 및 쿠키를 캐시에 포함할 것인지를 결정.
- 구성 요소: 캐시 정책 설정은 TTL(Time-To-Live) 값, 캐시할 헤더, 쿼리 문자열, 쿠키 등을 포함할 수 있음.
OAI (Origin Access Identity):
CloudFront가 S3에 저장된 Private 객체에 액세스 할 수 있도록 하는 특별한 식별자
외부 사용자가 S3 Endpoint를 통한 직접적인 요청이 아닌 CF의 배포를 통해 접근하도록 구성하고 싶다면 OAI를 고려할 수 있음
S3 Origin 보안 강화를 위해 요청을 식별하는 데 사용되는 S3만을 위한 CloudFront 서비스 (S3의 ‘Principal’을 통해 참조)
CloudFront가 사용자에게 콘텐츠를 전달할 때 HTTP 응답에 추가할 헤더를 정의하는 기능
Signed Url
개별 파일에 대한 access 제공 (파일 하나당 하나의 url) 만료시간, IP주소 범위 등 지정
ex. 쿠키 구운 구독자에게만 웹툰을 제공
Signed Cookie
다수의 파일에 대한 access 제공 (다수의 파일에 하나의 signed cookie)
만료시간, IP주소 범위 등 지정
ex. 로그인 한 유료회원에게 콘텐츠를 제공