S3 (Simple Storage Service) 란?
무제한 확장 가능한 객체 스토리지
파일, 이미지, 로그, 백업 등 모든 형태의 데이터를 객체(Object) 단위로 저장할 수 있다.
📦 S3 스토리지 클래스별 비교

| 스토리지 클래스 | 가용성 | 최소 저장 기간 | 검색 속도 | 주요 사용 사례 | 시험 포인트 |
|---|
| S3 Standard | 99.99% | 없음 | 즉시 | 자주 접근하는 데이터 | 기본값 |
| S3 Standard-IA | 99.9% | 30일 | 즉시 | 백업, DR | 검색 비용 있음 |
| S3 One Zone-IA | 99.5% | 30일 | 즉시 | 2차 백업, 재생성 가능 데이터 | 단일 AZ, 저비용 |
| S3 Glacier Instant Retrieval | 99.9% | 90일 | 밀리초 | 콜드 데이터, 빠른 액세스 | 빠름 + 저렴 |
| S3 Glacier Flexible Retrieval | 99.99% | 90일 | 1~12시간 | 장기 보관 | 3가지 티어: Expedited, Standard, Bulk |
| S3 Glacier Deep Archive | 99.99% | 180일 | 12~48시간 | 가장 저렴한 장기 보관 | 2가지 티어: Standard, Bulk |
| S3 Intelligent-Tiering | 99.9% | 일부 티어는 최소 저장 기간 있음 | 자동 | 무작위 액세스 패턴 데이터 | 검색 비용 없음, 자동 전환 |
⚙️ 적합한 클래스 상황 예시
| 질문 유형 | 정답 방향 |
|---|
| “자주 접근하지 않지만 빠르게 검색하고 싶다” | Glacier Instant Retrieval |
| “아카이빙 + 가장 저렴 + 장기 저장” | Glacier Deep Archive |
| “객체를 얼마나 자주 읽을지 모른다” | S3 Intelligent-Tiering |
| “AZ 장애 시 데이터 복구 어려움” | One Zone-IA (단일 AZ) |
| “자동 티어링 + 검색 비용 없이 관리하고 싶다” / “자주 액세스 하는 객체에 대한 즉각적 가용성” | Intelligent-Tiering |
🔐 S3 보안 정책
🔸 IAM 정책 (User-based Policy) - 액세스 제어
| 항목 | 설명 |
|---|
| 대상 | IAM 사용자 / IAM 역할 |
| 적용 범위 | 전체 AWS 리소스 중 S3 포함 |
| 구성 | Allow / Deny + Action + Resource |
| 특징 | 주체에 권한을 부여하는 정책 |
🧠 포인트:
- EC2에서 S3에 접근할 땐 IAM 사용자 X → 역할(EC2 Role) 사용
🔸 S3 버킷 정책 (Bucket Policy) - 액세스 제어
| 항목 | 설명 |
|---|
| 대상 | S3 버킷 단위 |
| 적용 방식 | 리소스 기반 (버킷에 부착) |
| 형식 | JSON 문서 (Principal, Effect, Action, Resource) |
| 기능 | 교차 계정 액세스, 퍼블릭 액세스 허용 등 |
🧠 포인트:
Principal: "*" → 모든 사용자 허용 = Public (퍼블릭)
- Deny가 포함되면 다른 정책이 허용해도 무조건 거부
- 다른 계정에서 접근하려면 버킷 정책에서 교차 계정 허용 설정 필요
🔸 객체 ACL (Access Control List) - 액세스 제어
| 항목 | 설명 |
|---|
| 대상 | 개별 객체나 버킷 |
| 역할 | 객체 레벨에서 세밀한 권한 제어 |
| 특징 | 이전 방식, AWS에서는 버킷 정책 선호 |
| 상태 | 비활성화 가능 (ACL 비활성화 옵션 제공) |
*🧠 포인트:*
- S3는 보안 정책으로 ACL보다 버킷 정책과 IAM 정책을 권장
- ACL은 시험에서 “사용하지 않는 것이 Best Practice”로 나올 수 있음
🔸 S3 Block Public Access - 액세스 제어
| 항목 | 설명 |
|---|
| 적용 대상 | 버킷 또는 전체 계정 |
| 역할 | 퍼블릭 정책/ACL이 있더라도 강제로 차단 |
| 목적 | 실수로 퍼블릭 설정된 버킷을 차단하여 데이터 유출 방지 |
*🧠 포인트:*
- 퍼블릭 버킷 정책이 있어도 접근 안 됨 → Block Public Access 때문
- “S3 객체가 퍼블릭이어야 하는데 접근 불가하다” → 이 설정 확인해야 함
- 계정 단위로도 설정 가능 (보안 강화)
🔸 Pre-Signed URL - 액세스 제어
| 항목 | 설명 |
|---|
| 생성자 | IAM 권한을 가진 사용자 |
| 사용 목적 | 비공개 객체를 제한된 시간 동안 안전하게 접근할 수 있게 함 |
| 특징 | URL에 서명이 포함되어 있어 임시 액세스 가능 |
*🧠 포인트:*
- 다운로드 링크나 일회성 액세스 제공 시 사용
- IAM 권한 없이도 사용할 수 있지만, URL 생성자는 권한이 있어야 함
🔸 SSE (Server-Side Encryption) - 암호화
| 암호화 방식 | 설명 | 특징 |
|---|
| SSE-S3 | S3 관리 키 사용 | 기본 옵션, 간편함 |
| SSE-KMS | KMS 키 사용 | 키 제어, 감사 로그 가능 |
| SSE-C | 고객 제공 키 사용 | 키를 직접 제공, 보안 관리 복잡 |
*🧠 포인트:*
- KMS 키 정책이 잘못되면 AccessDenied 오류 발생
- 감사 로그가 필요한 경우 → SSE-KMS 선택
📊 S3 보안 관련 구성 우선순위
명시적 거부(Deny) > 명시적 허용(Allow) > 기본 거부(Implicit Deny)
- “기본 거부(Implicit Deny)” = 아무 권한이 없으면, 기본적으로 AWS는 접근을 거부함
- 권한은 누적되지 않음!
🔸 성능 최적화 및 수명주기
✅ 성능 최적화
| 기본 성능 한도 | 접두사(Prefix)당🚀 3,500 PUT/COPY/DELETE/POST🚀 5,500 GET/HEAD 요청/초 |
|---|
| 접두사(prefix) | 객체 키의 앞부분 (예: folder1/sub1/file.jpg → 접두사는 folder1/sub1/) |
| 성능 확장 방법 | 접두사 수를 늘리면 수평 확장 가능 (접두사별로 처리량 할당됨) |
| 멀티파트 업로드 사용 조건 | 권장: 100MB 이상필수: 5GB 이상 |
| 멀티파트 업로드 장점 | 병렬 업로드 → 전송 속도 향상부분 실패 복구 가능 |
| S3 Transfer Acceleration | 엣지 로케이션을 활용한 글로벌 업로드 최적화멀티파트 업로드와 호환 |
| Transfer Acceleration 활용 예 | 미국 → 서울 리전 S3로 대용량 파일 업로드 시 사용 |
| 바이트 범위 요청 (Range Fetches) | 병렬 다운로드 최적화, 파일 일부만 빠르게 가져올 수 있음 |
| Range Fetches 사용 예 | 대용량 로그 파일의 헤더 정보만 빠르게 조회 (ex: 처음 50바이트) |
| 최적의 업로드 전략 | 멀티파트 + Transfer Acceleration 조합 |
| 최적의 다운로드 전략 | 바이트 범위 요청 + 병렬 처리 |
| 대용량 객체 최대 크기 | 최대 5TB (단, 반드시 멀티파트 업로드 사용) |
✅ 수명주기 (Lifecycle) 정책

- S3 객체의 스토리지 클래스 전환 or 자동 삭제를 일정 기간 경과 후 자동 수행하는 기능
🔸 주요기능
| 🎯 Transition (전환) | 객체를 일정 기간 후 더 저렴한 스토리지 클래스로 전환 |
|---|
| 🗑 Expiration (만료/삭제) | 객체를 일정 기간 후 자동으로 삭제 |
🔸 지원되는 전환 대상 스토리지 클래스
| 대상 스토리지 클래스 | 조건 |
|---|
| Standard-IA | 최소 30일 보관 권장 |
| One Zone-IA | 단일 AZ, 비용 저렴, 최소 30일 권장 |
| Glacier Flexible Retrieval | 최소 90일 |
| Glacier Deep Archive | 최소 180일 |
🔸 적용 방식
| 적용 기준 | 설명 |
|---|
| Prefix 기반 | logs/, images/ 등 경로 지정 가능 |
| 태그(Tag) 기반 | {"type": "archive"} 같은 특정 태그 객체에만 |
📝 요약
| 자동 스토리지 전환 | 비용 최적화 목적 |
|---|
| 자동 삭제 | 장기 데이터 정리 |
| 최소 보관 기간 | IA: 30일 / Glacier: 90일 / Deep Archive: 180일 |
| 버전 객체 관리 | 이전 버전 삭제 & 삭제 마커 정리 가능 |
| 정리 기능 | 미완성 멀티파트 업로드도 정리 가능 |
| 적용 대상 | 접두사 or 태그 필터링 가능 |
‼️ 주의 ( S3 Storage Class Analysis와 구분 )
| ⏳ 전환 수행 주체 | ✅ S3 수명 주기(Lifecycle Policy) | 객체를 일정 시간 후에 자동으로 다른 스토리지 클래스로 전환해 줌 (예: 30일 후 IA로 이동) |
|---|
| 🧠 전환 시점 추천 도구 | ✅ S3 Storage Class Analysis | 어떤 객체가 언제 IA 또는 Glacier로 전환되면 좋을지 분석해 주는 도구 (접근 패턴 기반) |
🎯 실생활 예시
• 웹사이트 이미지 호스팅
• 백업/DR 저장소
• 로그 저장 후 Athena 또는 Redshift로 분석
• 정적 웹사이트 호스팅 (index.html 등)