[AWS 자격증] Amazon S3 정리
AWSS3자격증
작성자 : 오예환 | 작성일 : 2026-01-09 | 수정일 : 2026-01-09
Amazon S3 정리
1. Amazon S3 개요
S3란?
- AWS의 핵심 구성 요소 중 하나
- "무한 확장" 스토리지로 홍보됨z
- 많은 웹사이트와 AWS 서비스의 백본으로 사용
주요 사용 사례
| 분류 | 사용 사례 |
|---|---|
| 저장/백업 | 백업, 재해 복구, 아카이브 |
| 호스팅 | 애플리케이션 호스팅, 미디어 호스팅, 정적 웹사이트 |
| 데이터 분석 | 데이터 레이크, 빅데이터 분석 |
| 기타 | 하이브리드 클라우드 스토리지, 소프트웨어 배포 |
💡 실제 사례
- Nasdaq: 7년치 데이터를 S3 Glacier에 저장
- Sysco: 데이터 분석으로 비즈니스 인사이트 획득
2. S3 버킷 (Buckets)
버킷이란?
- 객체(파일)를 저장하는 컨테이너 (디렉토리 개념)
- 전역적으로 고유한 이름 필요 (모든 리전, 모든 계정 통틀어)
- 리전 레벨에서 정의됨
⚠️ S3는 글로벌 서비스처럼 보이지만, 버킷은 특정 리전에 생성됨
버킷 이름 규칙
| 규칙 | 설명 |
|---|---|
| 대문자 | ❌ 불가 |
| 언더스코어 (_) | ❌ 불가 |
| 길이 | 3~63자 |
| IP 형식 | ❌ 불가 |
| 시작 문자 | 소문자 또는 숫자 |
접두사 xn-- | ❌ 불가 |
접미사 -s3alias | ❌ 불가 |
3. S3 객체 (Objects)
객체 키 (Key)
s3://my-bucket/my_folder1/another_folder/my_file.txt
│ │ │
└── 버킷명 └── prefix ────┴── object name- 키 = 전체 경로 (FULL path)
- S3에는 실제 "디렉토리" 개념이 없음
- 슬래시(/)를 포함한 긴 키 이름일 뿐 (UI가 폴더처럼 보여줄 뿐)
객체 구성 요소
| 구성 요소 | 설명 |
|---|---|
| Value | 파일 본문 내용 |
| Max Size | 5TB (5000GB) |
| Metadata | 텍스트 키/값 쌍 (시스템 또는 사용자 메타데이터) |
| Tags | 유니코드 키/값 쌍 (최대 10개) - 보안/수명주기에 유용 |
| Version ID | 버전 관리 활성화 시 |
⚠️ 5GB 초과 업로드 시 반드시 Multi-part Upload 사용
4. S3 보안
접근 제어 방식
| 방식 | 유형 | 설명 |
|---|---|---|
| User-Based | IAM Policies | 특정 IAM 사용자에게 허용할 API 호출 정의 |
| Resource-Based | Bucket Policies | 버킷 전체 규칙, Cross-Account 허용 가능 |
| Object ACL | 객체 단위 세밀한 제어 (비활성화 가능) | |
| Bucket ACL | 버킷 단위 (잘 안 씀, 비활성화 가능) |
S3 객체 접근 조건
IAM 권한이 허용 OR 리소스 정책이 허용
AND
명시적 DENY 없음Bucket Policy 구조 (JSON)
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::bucket-name/*"
}
]
}| 요소 | 설명 |
|---|---|
| Resource | 버킷과 객체 지정 |
| Effect | Allow / Deny |
| Action | 허용/거부할 API |
| Principal | 정책 적용 대상 (계정/사용자) |
Bucket Policy 사용 사례
- 버킷 퍼블릭 액세스 허용
- 업로드 시 암호화 강제
- Cross-Account 접근 허용
접근 시나리오별 설정
| 시나리오 | 설정 방법 |
|---|---|
| 퍼블릭 접근 | Bucket Policy (Public Access 허용) |
| IAM 사용자 접근 | IAM Policy |
| EC2 인스턴스 접근 | IAM Role (권장) |
| 다른 AWS 계정 접근 | Bucket Policy (Cross-Account) |
Block Public Access 설정
- 회사 데이터 유출 방지 목적
- 버킷이 절대 퍼블릭이 되면 안 되는 경우 활성화 유지
- 계정 레벨에서도 설정 가능
5. 정적 웹사이트 호스팅
개요
- S3로 정적 웹사이트를 호스팅하고 인터넷에서 접근 가능
- CloudFront와 함께 많이 사용됨
웹사이트 URL 형식
http://bucket-name.s3-website-aws-region.amazonaws.com
또는
http://bucket-name.s3-website.aws-region.amazonaws.com예시 (us-west-2 리전, demo-bucket):
http://demo-bucket.s3-website-us-west-2.amazonaws.com
http://demo-bucket.s3-website.us-west-2.amazonaws.com⚠️ 403 Forbidden 에러 발생 시 → Bucket Policy에서 퍼블릭 읽기 허용 확인!
6. 버전 관리 (Versioning)
개요
- 버킷 레벨에서 활성화
- 같은 키로 덮어쓰기 시 버전 증가: 1, 2, 3...
장점
- 의도치 않은 삭제 방지 (버전 복원 가능)
- 이전 버전으로 쉽게 롤백
주의사항
- 버전 관리 활성화 전 파일의 버전 =
null - 버전 관리 일시 중지해도 이전 버전은 삭제되지 않음
7. 복제 (Replication)
유형
| 유형 | 설명 | 사용 사례 |
|---|---|---|
| CRR (Cross-Region) | 다른 리전으로 복제 | 규정 준수, 지연시간 단축, 계정 간 복제 |
| SRR (Same-Region) | 같은 리전 내 복제 | 로그 집계, 프로덕션↔테스트 실시간 복제 |
필수 조건
- 원본/대상 버킷 모두 버전 관리 활성화
- S3에 적절한 IAM 권한 부여
- 복제는 비동기로 수행
주의사항
| 항목 | 설명 |
|---|---|
| 기존 객체 | 복제 활성화 후 새 객체만 복제됨 |
| 기존 객체 복제 | S3 Batch Replication 사용 |
| DELETE 작업 | Delete Marker 복제는 선택사항 |
| Version ID 삭제 | 복제 안 됨 (악의적 삭제 방지) |
| 체이닝 | ❌ 불가 (버킷1→버킷2→버킷3 시 버킷1→버킷3 복제 안 됨) |
8. S3 스토리지 클래스
내구성 vs 가용성
| 구분 | 설명 |
|---|---|
| 내구성 (Durability) | 99.999999999% (11 9's) - 모든 클래스 동일 |
| 가용성 (Availability) | 스토리지 클래스마다 다름 |
💡 1천만 개 객체 저장 시 평균 1만 년에 1개 손실
스토리지 클래스 종류
8.1 S3 Standard (범용)
| 항목 | 값 |
|---|---|
| 가용성 | 99.99% |
| 용도 | 자주 접근하는 데이터 |
| 특징 | 저지연, 높은 처리량, 2개 시설 동시 장애 견딤 |
| 사용 사례 | 빅데이터 분석, 모바일/게임 앱, 콘텐츠 배포 |
8.2 S3 Standard-IA (Infrequent Access)
| 항목 | 값 |
|---|---|
| 가용성 | 99.9% |
| 용도 | 자주 접근 안 하지만 빠른 접근 필요 시 |
| 비용 | S3 Standard보다 저렴 |
| 사용 사례 | 재해 복구, 백업 |
8.3 S3 One Zone-IA
| 항목 | 값 |
|---|---|
| 가용성 | 99.5% |
| 특징 | 단일 AZ (AZ 파괴 시 데이터 손실) |
| 사용 사례 | 보조 백업, 재생성 가능한 데이터 |
8.4 S3 Glacier 클래스
| 클래스 | 검색 시간 | 최소 저장 기간 | 용도 |
|---|---|---|---|
| Glacier Instant Retrieval | 밀리초 | 90일 | 분기 1회 접근 데이터 |
| Glacier Flexible Retrieval | 1 ~ 5분 / 3 ~ 5시간 / 5 ~ 12시간 | 90일 | 아카이브 |
| Glacier Deep Archive | 12시간 / 48시간 | 180일 | 장기 보관 |
Glacier Flexible Retrieval 검색 옵션:
- Expedited: 1~5분
- Standard: 3~5시간
- Bulk: 5~12시간 (무료)
Glacier Deep Archive 검색 옵션:
- Standard: 12시간
- Bulk: 48시간
8.5 S3 Intelligent-Tiering
| 항목 | 설명 |
|---|---|
| 특징 | 사용 패턴에 따라 자동으로 티어 이동 |
| 비용 | 월간 모니터링 + 자동 티어링 비용 |
| 검색 비용 | 없음 |
티어 구성:
| 티어 | 조건 | 자동/선택 |
|---|---|---|
| Frequent Access | 기본 티어 | 자동 |
| Infrequent Access | 30일 미접근 | 자동 |
| Archive Instant Access | 90일 미접근 | 자동 |
| Archive Access | 90~700일+ 설정 | 선택 |
| Deep Archive Access | 180~700일+ 설정 | 선택 |
9. 스토리지 클래스 비교표
| 클래스 | 가용성 | AZ 수 | 최소 저장 기간 | 검색 비용 |
|---|---|---|---|---|
| Standard | 99.99% | ≥3 | 없음 | 없음 |
| Intelligent-Tiering | 99.9% | ≥3 | 없음 | 없음 |
| Standard-IA | 99.9% | ≥3 | 30일 | GB당 |
| One Zone-IA | 99.5% | 1 | 30일 | GB당 |
| Glacier Instant | 99.9% | ≥3 | 90일 | GB당 |
| Glacier Flexible | 99.99% | ≥3 | 90일 | GB당 |
| Glacier Deep Archive | 99.99% | ≥3 | 180일 | GB당 |
10. 스토리지 클래스 가격 비교 (us-east-1 기준)
| 클래스 | 저장 비용 (GB/월) | 특징 |
|---|---|---|
| Standard | $0.023 | 가장 높음 |
| Intelligent-Tiering | $0.0025~$0.023 | 자동 최적화 |
| Standard-IA | $0.0125 | Standard의 약 절반 |
| One Zone-IA | $0.01 | 단일 AZ |
| Glacier Instant | $0.004 | 빠른 검색 |
| Glacier Flexible | $0.0036 | 유연한 검색 옵션 |
| Glacier Deep Archive | $0.00099 | 가장 저렴 |
스토리지 클래스 선택 가이드
자주 접근? ─────────────────────────────────────┐
│ │
├─ Yes → S3 Standard │
│ │
└─ No ─┬─ 빠른 접근 필요? ─┬─ Yes ──────────┤
│ │ │
│ └─ No → Glacier │
│ │
└─ 접근 패턴 예측 불가? → Intelligent-Tiering핵심 포인트 요약
- 버킷명은 전역 고유 - 모든 리전, 모든 계정 통틀어 유일해야 함
- 5GB 초과 → Multi-part Upload 필수
- EC2에서 S3 접근 → IAM Role 사용 (Access Key 대신)
- 버전 관리 - 삭제 방지, 롤백에 필수
- 복제는 버전 관리 필수 - CRR/SRR 모두
- 비용 최적화 - Lifecycle 정책으로 스토리지 클래스 자동 전환