Udemy - Stephane Maarek AWS SAA 강의를 듣고 메모 목적으로 남김
1. Amazon S3 개요 및 버킷 (Buckets)
- 개념: 무한대로 확장 가능한 완전 관리형 객체 스토리지(Object Storage) 서비스. 백업, 웹사이트 호스팅, 데이터 레이크 등에 사용됨.
- 버킷 (Buckets):
- 객체(파일)가 저장되는 논리적인 최상위 컨테이너 역할을 함.
- 글로벌 고유 이름(Globally Unique Name): 모든 AWS 계정 및 전체 리전을 통틀어 버킷 이름은 절대 중복될 수 없음.
- 이름은 글로벌하게 관리되지만, 실제 데이터는 특정 리전(Region)을 지정하여 저장됨.
- 버킷 명명 규칙:
- 대문자 및 밑줄(_) 사용 불가.
- 3자 ~ 63자 사이의 길이.
- 소문자 또는 숫자로 시작해야 하며, IP 주소 형식(예: 192.168.0.1)은 사용할 수 없음.
2. 객체 (Objects)
- 개념: 버킷 안에 저장되는 파일. 실제 S3에는 폴더(디렉터리) 개념이 없는 평면적(Flat) 구조이며, 매우 긴 이름(키)에 슬래시(
/)를 포함하여 폴더처럼 보이게 할 뿐임.
- 객체 키 (Key): 버킷 내 객체의 전체 경로 (예:
s3://my-bucket/my_folder/file.txt).
- 객체 특성:
- 최대 객체 크기: 50TB (50,000GB).
- 한 번에 업로드할 수 있는 최대 크기는 5GB이며, 5GB를 초과하면(100MB 이상부터 권장) 반드시 멀티파트 업로드(Multi-part Upload)를 사용해야 함.
- 메타데이터(시스템/사용자 정의), 태그(보안/수명 주기 관리용, 최대 10개), 버전 ID를 가짐.
3. S3 보안 (Security)
S3는 기본적으로 비공개(Private) 상태이며, 다음 방법들로 접근을 제어함.
- 사용자 기반 (User-Based): IAM 정책을 통해 특정 사용자나 역할에 API 호출 권한을 부여함.
- 리소스 기반 (Resource-Based):
- 버킷 정책 (Bucket Policies): 버킷 전체에 적용되는 JSON 정책. 퍼블릭 액세스를 허용하거나, 교차 계정(Cross Account) 액세스를 부여하거나, 암호화 업로드를 강제할 때 사용함.
- 객체/버킷 ACL (Access Control List): 과거의 방식이며, 현재는 버킷 정책 사용이 더 권장됨.
- 퍼블릭 액세스 차단 (Block Public Access): 데이터 유출 사고를 막기 위해 계정이나 버킷 수준에서 기본적으로 켜져 있는 강력한 차단 설정임.
4. 정적 웹사이트 호스팅 (Static Website Hosting)
- 개념: 서버(EC2 등) 없이 S3 버킷만으로 HTML, CSS, JS 등의 정적 웹사이트를 저렴하게 전 세계에 배포할 수 있음.
- 특징: 사이트가 작동하려면 버킷의 '퍼블릭 액세스 차단'을 해제하고, 버킷 정책에서
s3:GetObject 권한을 퍼블릭(모두)으로 열어주어야 함 (오류 발생 시 403 Forbidden 반환).
5. CORS (Cross-Origin Resource Sharing)
- 개념: 웹 브라우저에서 한 출처(Origin)의 스크립트가 다른 출처(도메인)의 자원에 접근할 수 있도록 권한을 부여하는 보안 메커니즘.
- S3 적용: 다른 도메인에 있는 웹사이트가 S3 버킷의 이미지나 리소스를 불러오려면, S3 버킷에 올바른 CORS 헤더(CORS configuration)를 설정하여 해당 도메인을 명시적으로 허용해야 함.
6. S3 버전 관리 (Versioning)
- 개념: 동일한 이름(키)의 파일을 덮어쓸 때, 이전 파일을 지우지 않고 버전 번호(ID)를 부여해 모두 보존하는 기능.
- 특징 및 장점:
- 버킷 수준에서 활성화함.
- 의도치 않은 삭제 방지: 객체를 삭제하면 파일이 지워지는 대신 삭제 마커(Delete Marker)가 추가됨. 마커를 지우면 파일이 복원됨.
- 한 번 활성화하면 일시 중단(Suspend)만 가능할 뿐, 완전히 끌 수는 없음.
7. S3 복제 (Replication)
- 개념: 하나의 버킷에 올라온 객체를 다른 버킷으로 비동기식 자동 복사함.
- 유형:
- CRR (Cross-Region Replication): 다른 리전으로 복제 (재해 복구, 지연 시간 단축, 규정 준수).
- SRR (Same-Region Replication): 같은 리전 내 복제 (로그 집계, 개발/테스트 환경 동기화).
- 요구 사항:
- 원본 버킷과 대상 버킷 모두 '버전 관리'가 반드시 켜져 있어야 함.
- 복제 설정 이후의 새 파일만 복제되며, 기존 파일을 복사하려면 S3 Batch Replication을 사용해야 함.
- 연쇄 복제(A -> B -> C)는 불가능함.
8. S3 내구성 및 가용성 (Durability & Availability)
- 내구성 (Durability): 데이터가 유실되지 않을 확률. 모든 S3 스토리지 클래스는 99.999999999% (11 9's)의 엄청난 내구성을 제공함. (1천만 개의 객체를 저장하면 1만 년에 1개 잃어버릴 확률). 여러 가용 영역(AZ)에 걸쳐 데이터를 저장해 이를 달성함.
- 가용성 (Availability): 시스템이 다운되지 않고 정상적으로 응답할 확률. 스토리지 클래스마다 다름 (예: S3 Standard는 99.99%).
9. S3 스토리지 클래스 (Storage Classes)
데이터의 접근 패턴과 비용에 따라 최적의 스토리지 계층을 선택할 수 있음.
1) Amazon S3 Standard (범용)
- 99.99% 가용성. 자주 접근하는(Frequently accessed) 데이터에 사용.
- 지연 시간이 짧고 처리량이 높음. 2개의 시설이 동시에 장애가 나도 견딜 수 있음.
- 용도: 빅데이터 분석, 모바일/게임 애플리케이션, 콘텐츠 배포.
2) Amazon S3 Standard-IA (Infrequent Access)
- 99.9% 가용성. 자주 접근하지 않지만, 필요할 때 밀리초 단위로 즉시 접근해야 하는 데이터용.
- Standard보다 저장 비용은 저렴하지만, 데이터를 꺼낼 때 검색 비용(Retrieval Fee)이 발생함.
- 용도: 재해 복구(DR), 데이터 백업.
3) Amazon S3 One Zone-IA
- 99.5% 가용성. 데이터를 여러 AZ가 아닌 단일 AZ(One Zone)에만 저장함.
- 해당 AZ가 파괴되면 데이터도 완전히 손실되지만, 저장 비용이 Standard-IA 대비 20% 더 저렴함.
- 용도: 쉽게 다시 생성할 수 있는 데이터, 온프레미스 데이터의 2차 백업용.
4) Amazon S3 Glacier (아카이브 / 장기 보관용)
저장 비용이 매우 저렴한 대신, 데이터를 꺼내는 데 시간이 걸리거나 검색 비용이 발생함.
- Glacier Instant Retrieval: 분기별로 한 번 접근하는 데이터용. 밀리초 단위로 즉시 검색 가능하지만 최소 90일 보관 요금이 부과됨.
- Glacier Flexible Retrieval: 검색 옵션에 따라 빠르면 1~5분(Expedited), 보통 3~5시간(Standard), 무료 대량 검색은 5~12시간(Bulk)이 소요됨. 최소 90일 보관 요금 부과.
- Glacier Deep Archive: 가장 저렴한 보관 비용. 데이터를 꺼내는 데 12시간(Standard) 또는 48시간(Bulk)이 걸림. 최소 180일 보관 요금 부과.
5) Amazon S3 Intelligent-Tiering
- 데이터 접근 패턴을 알 수 없거나 예측하기 어려울 때 사용하는 스마트 계층.
- 소액의 월별 모니터링 수수료를 내면, AWS가 사용량을 분석해 자주 쓰면 Frequent 계층으로, 30일 안 쓰면 Infrequent 계층으로, 90일 안 쓰면 Archive 계층으로 자동 이동시켜 줌.
- 데이터를 이동시키거나 검색할 때 별도의 검색 비용(Retrieval charge)이 발생하지 않음.
6) S3 Express One Zone
- 초고성능이 필요한 작업에 특화된 단일 AZ 스토리지 클래스 (디렉터리 버킷 사용).
- S3 Standard보다 최대 10배 뛰어난 성능(초당 수십만 건 처리)을 내며, 지연 시간은 한 자릿수 밀리초임. 데이터 접근 비용도 50% 저렴함.
- 용도: 극도로 지연 시간에 민감한 AI/ML 훈련, 금융 모델링, 고성능 컴퓨팅(HPC) 등.