Amazon S3(Simple Storage Service)는 AWS에서 가장 기본적이면서도 핵심적인 객체 스토리지 서비스이다. 이 글에서는 S3의 구조, 기능, 보안, 스토리지 클래스까지 정리하고, 단골 출제 내용인만큼, AWS SAA 시험을 대비하는 주요 포인트도 정리해본다.
🔹 1. S3란?

- 무한 확장 가능한 객체 스토리지 서비스
- 다양한 산업의 백업, 복원, 정적 웹사이트 호스팅, 빅데이터 분석 등에서 사용
- 데이터는 버킷(Bucket) 에 저장되며, 각 데이터는 객체(Object) 로 불림
📁 2. S3 구조: Buckets & Objects

📦 Buckets
- 상위 디렉토리처럼 동작하며, 리전 단위로 생성
- 버킷 이름은 전 세계적으로 유일해야 함
- 버킷 네이밍 규칙:
- 대문자 ❌
- 밑줄(_) ❌
- 3~63자 길이
- 숫자 또는 소문자로 시작
- IP 형태 ❌
📄 Objects
- 각 객체는 Key(전체 경로) 를 가지며, 접두사 + 파일명 형식
- 예:
s3://my-bucket/images/2024/profile.png
- 최대 크기: 5TB
- 5GB 초과 시 멀티파트 업로드 필수
- 객체는 다음 정보를 가질 수 있음:
- Value (파일 데이터)
- Metadata (시스템/사용자 지정 키-값 쌍)
- Tags (최대 10개)
- Version ID (버전 관리가 켜진 경우)
🔄 3. Versioning (버전 관리)
- 버킷 단위로 설정, 기본은 비활성화 상태
- 동일한 키에 덮어쓰면 새로운 버전이 생성됨
- 의도치 않은 삭제 방지, 이전 버전 복원 가능
- 삭제 시: 삭제 마커 생성 → 마커 제거로 복구 가능
- 비활성화 전 객체는
null 버전 ID 보유
♻️ 4. 수명주기 정책 (Lifecycle Policy)

- 객체의 수명 주기를 자동화하여 비용 최적화
- 예: 일정 기간 후 S3 Standard → S3 IA → Glacier 이동
✅ 구성 요소
- Transition: 일정 시간 후 다른 스토리지 클래스로 이동
- Expiration: 일정 기간 후 객체 자동 삭제
- NoncurrentVersionExpiration: 이전 버전 자동 삭제
- AbortIncompleteMultipartUpload: 미완성 멀티파트 업로드 자동 정리
💡 사용 예시
- 업로드 후 30일 → IA, 60일 → Glacier, 365일 → 삭제
- 백업 정책, 로그 정리에 매우 유용
🔐 5. 암호화 옵션
서버 측 암호화 (SSE)
-
SSE-S3: AWS 관리 키, AES-256 사용

-
SSE-KMS: AWS KMS 키 사용 + 감사 로그

-
SSE-C: 고객 제공 키로 암호화 (HTTPS 필수, 키 저장 안 함)

클라이언트 측 암호화

전송 중 암호화
- HTTPS 사용 권장, SSL/TLS 기반
- SSE-C의 경우 HTTPS 필수
🔒 6. 보안 구성 요소
사용자 기반
리소스 기반
🔥 퍼블릭 액세스 차단
- ACL 기반 / 버킷 정책 기반 모두 차단 가능
- 교차 계정 및 퍼블릭 접근 방지 목적
🛡️ 7. 감사 및 네트워크 보안
-
CloudTrail: S3 API 호출 기록

-
Access Logs: 액세스 기록을 다른 S3 버킷에 저장
-
VPC Endpoint: 인터넷 없이 프라이빗 네트워크에서 S3 접근
-
MFA 삭제: 다중 인증을 통해 삭제 제한
-
Pre-Signed URL: 유효기간 있는 일회용 객체 접근 링크
🌐 8. 정적 웹사이트 호스팅

- 버킷을 웹 호스팅 용도로 사용
- URL 형식:
http://<bucket>.s3-website-<region>.amazonaws.com
- 403 오류 시: 퍼블릭 읽기 권한과 버킷 정책 확인 필수
🔀 9. 복제 (Replication)

- CRR (Cross-Region Replication): 서로 다른 리전 간 복제
- SRR (Same-Region Replication): 동일 리전 내 복제
- 조건:
- 양쪽 모두 버전 관리 ON
- IAM 권한 필수 (읽기, 쓰기)
- 복제는 비동기 방식
- S3 Batch Replication: 기존 객체 복제 시 사용
- 삭제 마커 복제는 선택적 설정
- 복제 체이닝 불가 (A -> B -> C 불가)
📦 10. 스토리지 클래스

✅ S3 Standard
- 일반적 사용 (99.99% 가용성, 짧은 지연시간)
📉 S3 Standard-IA (Infrequent Access)
- 자주 접근하지 않는 데이터 (99.9%)
- 백업, DR에 적합, 검색 요금 발생
🧩 S3 One Zone-IA
- 단일 AZ 저장 (가용성 99.5%)
- 재생성 가능 데이터 백업용
🧊 Glacier 계열 (아카이빙)
- Glacier Instant Retrieval: 밀리초급 접근, 90일 최소 보관
- Glacier Flexible Retrieval:
- Expedited (1
5분), Standard (35시간), Bulk (5~12시간)
- Glacier Deep Archive:
- Standard (12시간), Bulk (48시간), 최소 180일 보관
🤖 Intelligent-Tiering
- 사용 패턴에 따라 자동 티어 전환
- 자동 티어:
- Frequent, Infrequent (30일 미접근), Archive (90일), Deep Archive (180일)
- 검색 비용 없음, 관리 편리
🔍 11. CORS 설정
- Cross-Origin Resource Sharing
- 클라이언트가 다른 출처의 S3 버킷에 요청할 경우 CORS 헤더 필수
- 허용 예시:
- 특정 도메인만 (
Access-Control-Allow-Origin)
- 모든 도메인 허용()
📖 12. 일관성 모델 (Consistency)
2020년 12월부터 Amazon S3는 강력한 일관성 모델을 보장합니다.
- PUT / DELETE 직후에도 최신 데이터 조회 가능
- 목록 요청 시 변경 즉시 반영
- 성능 저하나 추가 비용 없이 제공
🎯 SAA 시험 대비 포인트
- 버킷 네이밍 규칙, 키 구조 정확히 숙지
- SSE-S3 vs SSE-KMS vs SSE-C 비교 🔐
- Pre-Signed URL, MFA Delete 활용 시점
- S3 복제 조건 (CRR, SRR + 권한, 버전 관리)
- 다양한 스토리지 클래스 특징 및 최소 보관 기간 💡
- CORS와 정적 웹사이트 호스팅 구성 방식
- 강력한 일관성 모델의 적용 시점과 특징