📁 Amazon S3
Amazon S3는 무한 스케일링 저장소라고 한다.
많은 웹사이트에서 Amazon S3를 백본으로 사용하고,
많은 AWS 서비스들도 Amazon S3를 통합하여 이용한다.
⚙️ Amazon S3의 Use cases
- 백업 및 저장소
- 재난 복구
- 아카이브
- 하이브리드 클라우드 저장소
- 애플리케이션 호스팅
- 데이터 레이크 & 빅데이터 분석
- 소프트웨어 제공
- 정적인 웹사이트 호스팅
🪣 Amazon S3 Buckets
아마존 S3는 객체들을 버킷에 저장하도록 한다.
버킷에는 모든 리전과 모든 계정을 통틀어서 고유한 이름을 사용해야 한다.
S3는 글로벌 서비스처럼 보이지만, 버킷은 리전 단위로 생성된다.
✅ 버킷 명명 규칙
- 대문자나 밑줄을 허용하지 않음
- 3 ~ 6글자
- IP 주소는 안됨
- 반드시 소문자나 숫자로 시작해야 함
- xn-- 접두사로 시작하면 안됨
- -s3alias 접미사로 끝나면 안됨
📦 Amazon S3 Objects
🧬 객체의 구성 요소
- 키 : 객체는 키를 가지고 있으며, 키는 파일 전체 경로이다. 키는 아주 길고 /를 포함하며, 접두사와 객체 이름으로 구성된다.
- 객체값 : 저장하려는 콘텐츠로 5테라바이트 크기로 제한되며, 5기가바이트 이상 업로드시 분할 업로드를 사용해야 한다.
- 메타데이터 : 시스템이나 사용자 메타데이터를 표시하기 위한 키/값 쌍 리스트이다.
- 태그 : 최대 10개까지 연결 가능한 유니코드 키/값 쌍으로, 보안과 생명 주기 관리에 유용하다.
- 버전 ID
🔐 Amazon S3 Security
⚙️ S3의 보안 유형
- User-Based
- Resource-Based
- Encryption : 암호 키를 이용해 객체를 암호화한다
✅ IAM 원리가 S3 객체에 접근 가능한 상황
- 사용자 IAM 권한이나 리소스 정책이 허용하는 경우
- 명시적인 거부가 없을 경우
⚙️ 버킷 정책
버킷 정책은 json 기반의 정책이다.
🧬 정책의 구조
- Resource : 버킷과 객체
- Effect : 허용 / 거부
- Action : 허용하거나 거부할 API 세트
- Principal : 정책을 적용할 계정이나 사용자
✅ S3 버킷에 정책을 사용하는 경우
- 버킷에 엑세스 권한을 주는 경우
- 업로드시 객체를 암호화하도록 강제하는 경우
- 다른 계정에 엑세스 권한을 주는 경우
Block Public Access를 위한 버킷 설정이란, 기업 데이터 유출을 막기 위해 개발된 설정이다.
버킷이 공개되면 안 되는 경우 반드시 설정을 켜둬야 하며, 계정 레벨로 설정해둘 수 있다.
📄 정적 웹사이트 호스팅
S3는 정적 웹사이트를 호스팅할 수 있고, 인터넷에서 엑세스할 수 있도록 해준다.
만약 URL이 403에러를 발생시킨다면, 버킷 정책에 의해 버킷이 공개되어 있는지를 확인해봐야 한다.
✅ Versioning
아마존 S3에서는 파일을 버전화 할 수 있으며, 버킷 레벨에서 이 설정을 활성화해야 한다.
동일한 키를 재업로드하는 경우, 파일을 덮어쓰는 대신 새로운 버전을 생성하게 된다.
버전을 활성화하기 전에 버전화되지 않은 파일은 null 버전을 가지게 되며,
버전 관리를 중단하더라도 이전 버전이 삭제되지는 않는다.
👍🏻 버킷 버전화의 장점
- 의도하지 않은 삭제로부터 보호할 수 있다.
- 이전 버전으로 쉽게 롤백할 수 있다.
📑 Replication
버킷 복제를 위해선 복제 대상과 타깃 버킷의 버전화를 활성화해야 한다.
서로 다른 AWS 계정의 버킷을 복제에 사용할 수 있다.
복제는 비동기 방식으로 이루어지며, 복제를 위해서는 S3에 적절한 IAM 권한을 주어야 한다.
⚙️ Amazon S3 복제 옵션
- CRR : 교차 지역 복제로, 규정 준수, 적은 지연 엑세스, 계정 간의 복제에 도움이 된다.
- SRR : 동일 지역 복제로, 로그 집계, 프로덕션 계정과 테스트 계정간의 실시간 복제에 도움이 된다.
🫙 Storage Classes
스토리지 클래스를 매뉴얼하게 사용하거나 S3 Lifecycle 구성을 사용해 이동시킬 수 있다.
내구성 🆚 가용성
내구성 : S3의 내구성은 99.99%로 이는 만년에 한 개꼴로 객체 손실이 발생한다는 의미이며, 이는 모든 스토리지 클래스에서 동일하다.
가용성 : 서비스가 얼마나 잘 준비되어 있는지를 나타내며, 이는 스토리지 클래스에 따라 조금씩 다르다.
✅ 스토리지 클래스 종류
General Purpose
Infrequent Access
필요시 빠른 엑세스를 요구하지만, 덜 빈번하게 엑세스되는 데이터를 위해 사용된다.
S3 Standard보다 저렴하다.
Glacier Storage Classes
아카이브 생성이나 백업을 위한 저렴한 객체 저장소이다.
가격은 저장소 비용 + 객체 회수 비용만큼 청구된다.
Amazon S3 Intelligent Tiering
매월 소액의 모니터링 & 자동 등급화 수수료가 있으며, 사용 패턴에 따라 객체의 엑세스 등급을 자동으로 바꿔준다.
회수 비용은 별도로 존재하지 않는다.
기본 엑세스 등급인 Frequent Access tier,
30일간 엑세스되지 않은 객체가 속하는 Infrequent Access tier,
90~700일 이상의 기간 중 선택한 기간동안 엑세스되지 않은 객체가 속하는 Archive Instant Access tier가 있다.
🔐 S3 암호화
- Server-Side 암호화(기본값) : 버킷 생성시나 개체 업로드시마다 서버에 의해 암호화가 진행된다.
- Client-Side 암호화 : 사용자가 파일을 업로드하기 전에 암호화를 진행한다.
🧐 IAM Access Analyzer for S3
S3 버킷을 감시하는 기능을 제공하며, 허용된 사람만 S3 버킷에 접근할 수 있도록 해준다.
버킷 정책, S3 ACL, S3 Access Point 정책을 분석한다.
🔑 S3 책임 분배 모델
[AWS]
- 모든 인프라의 보안 (S3의 내구성과 가용성, 두 개의 시설 결함에 대한 손실 유지를 포함)
- 내부 구성과 취약점 분석
- 규정 준수 검증
[사용자]
- S3 버전화
- S3 버킷 정책 설정
- S3 복제 설정
- 로깅과 모니터링
- 최적의 S3 스토리지 클래스 사용
- 데이터 암호화
☃️ AWS Snow Family
AWS Snow Family는 엣지에서 데이터를 수집, 정제하거나
AWS 안팎으로 데이터를 마이그레이션 하기 위해 사용하는 고도로 보안화된 휴대용 장치이다.
데이터 마이그레이션에는 Snowcone, Snowball Edge, Snowmobile을 사용하며,
엣지 컴퓨팅에는 Snowcone, Snowball Edge를 사용한다.
🧳 데이터 마이그레이션을 위한 Snow Family 장치
Snowball Edge
AWS 안팎으로 TB나 PB 단위 데이터를 옮겨주는 물리적 데이터 이동 솔루션으로, 데이터 전송 건당으로 지불한다.
블록 저장소나 Amazon S3에 호환 가능한 객체 저장소를 제공한다.
데이터 센터 해체를 위한 대규모 데이터 클라우드 마이그레이션이나 재난 복구에 사용한다.
[Snowball Edge의 두 가지 종류]
Storage Optimized : 80TB HDD 용량의 블록 저장소 & S3와 호환되는 객체 저장소를 가진다.
Compute Optimized : 42TB HDD, 28TB NVMe 용량의 블록 저장소 & S3와 호환되는 객체 저장소를 가진다.
Snowcone
작고 휴대하기 편한 장비로, 가혹한 환경에서도 잘 견디며, 엣지 컴퓨팅, 저장소, 데이터 전송에 사용된다.
8TB 하드웨어 저장소인 Snowcone과 14TB SSD 저장소인 Snowcone SSD가 있다.
Snowball이 맞지 않는 환경에서 사용하면 되며, 배터리와 케이블을 사용해야 한다.
데이터를 AWS로 전송하기 위해서는 데이터를 오프라인으로 보내는 방법과
AWS DataSync를 사용해 인터넷을 통해 보내는 방법이 있다.
Snowmobile
진짜 트럭이다.
EB단위의 데이터를 전송할 수 있으며, 각 스노모빌은 100PB의 용량을 가진다.
온도가 조절되며, GPS나 24시간 영상 감시를 통해 높은 보안성을 제공한다.
10PB 이상의 데이터를 전송할 때 Snowball보다 더 좋다.
✅ Snow Family를 통한 데이터 마이그레이션 과정
- AWS 콘솔을 통해 Snowball 장치를 요청한다.
- Snowball client나 AWS OpsHub을 서버에 설치한다.
- Snowball을 서버에 연결하고 클라이언트를 사용해 파일을 복사한다.
- 사용을 완료하고 장치를 다시 반납한다.
- 데이터는 S3 버킷에 적재된다.
- Snowball은 완전히 지워진다.
🏝️ 엣지 컴퓨팅을 위한 Snow Family 장치 종류
엣지 컴퓨팅이란, 인터넷이 없거나 클라우드에서 멀리 떨어진 엣지에서 생성된 데이터를 처리하는 것으로,
작업을 위해 Snowball Edge나 Snowcone 장치를 사용한다.
Snowcone & Snowcone SSD
2개의 CPU, 4GB 메모리의 유,무선 장치로, C타입을 케이블을 사용한다.
Compute Optimized Snowball Edge
104개의 가상 CPU, 416GB RAM을 가진 장치로, GPU를 사용할 수도 있다.
28TB NVMe 또는 42TB HDD의 사용 가능한 스토리지를 가지며, 스토리지 클러스터링이 가능하다.
Storage Optimized Sonwball Edge
40개 이상의 가상 CPU, 80GB RAM과 80TB 저장소를 가진 장치이다.
모든 장치는 EC2 인스턴스와 AWS 람다 함수를 실행할 수 있으며, 장기 대여가 가능하다.
💻 AWS OpsHub
Snow Family 장치를 사용하기 위해서는 CLI가 필요로 해왔다.
하지만 오늘날은 AWS OpsHub을 통해 Snow Family 장치를 관리할 수 있다.
💰 Snowball Edge Pricing
장치 사용료와 AWS 바깥으로의 데이터 전송료를 지불해야 한다.
하지만 AWS S3 내부로의 데이터 전송료는 무료이다.
✅ 가격 정책 종류
On-Demand : 10일 / 80TB에 최적화와 15일 / 210TB에 최적화의 두 옵션 중 하나를 선택해서 사용하며, 배송일은 사용일에 포함되지 않는다.
Committed Upfront : 매월 선불로 사용료를 지불하며, 1년 사용과 3년 사용 중 하나를 정한다. 62% 할인된 가격으로 사용할 수 있다.
☁️ Hybrid Cloud for Storage
AWS는 하이브리드 클라우드를 밀어주는 중인데,
일부 인프라는 on-premises로, 나머지는 클라우드에 위치하는 방법이다.
긴 클라우드 이주기간, 보안 요구사항, 정책 요구사항, IT 전략을 이유로 사용된다.
S3는 EFS, NFS와 달리 아마존의 독점적인 기술이기 때문에 서버와 on-premise 둘 모두를 이용할 수 없는데,
이런 이유로 AWS Storage Gateway를 사용한다.
🚪 AWS Storage Gateway
on-premise 데이터와 S3의 클라우드 데이터 사이의 다리 역할을 한다.
on-premise에서 AWS Cloud를 매끄럽게 사용할 수 있도록 해주는 하이브리드 저장소로,
재난 복구, 백업 및 회복, 등급이 부여된 저장소에 사용된다.
[스토리지 게이트웨이의 종류]
- File Gateway
- Volumne Gateway
- Tape Gateway