S3 Lifecycle 정책 설계: 스토리지 비용을 자동으로 최적화하는 방법
S3 Lifecycle 정책으로 객체를 자동으로 저렴한 스토리지 클래스로 전환하거나 삭제하세요. SAA-C03 시험 필수 토픽인 수명 주기 정책 설계를 정리합니다.
관련 시험 도메인
- Domain 4: Design Cost-Optimized Architectures
핵심 요약 (BLUF)
S3 Lifecycle 정책은 객체를 자동으로 저렴한 스토리지 클래스로 전환하거나 삭제하여 스토리지 비용을 최적화합니다. 액세스 패턴이 예측 가능하면 Lifecycle 정책을, 예측 불가능하면 Intelligent-Tiering을 사용하세요.
시험 팁
시험 핵심: Lifecycle = 예측 가능한 패턴 + 자동 전환/삭제, Intelligent-Tiering = 예측 불가능한 패턴 + 자동 티어링
S3 Lifecycle이란?
S3 Lifecycle은 객체의 수명 주기 동안 스토리지 작업을 자동화하는 기능입니다. 생성 후 일정 기간이 지나면 저렴한 스토리지 클래스로 전환하거나 삭제할 수 있습니다.
Lifecycle 정책 예시 (로그 파일):
생성 → 30일 후 → 90일 후 → 365일 후
│ │ │ │
↓ ↓ ↓ ↓
Standard Standard-IA Glacier 삭제
($0.025) ($0.0138) ($0.005)
│ │ │
└────────┴──────────┴── 비용 절감
Lifecycle 작업 유형
1. 전환 작업 (Transition Actions)
객체를 다른 스토리지 클래스로 자동 이동합니다.
전환 가능 경로 (Waterfall 모델):
Standard
↓
Standard-IA ←→ Intelligent-Tiering
↓ ↓
One Zone-IA Glacier Instant Retrieval
↓ ↓
Glacier Flexible Retrieval
↓
Glacier Deep Archive
2. 만료 작업 (Expiration Actions)
객체를 자동으로 삭제합니다.
| 만료 유형 | 설명 |
|---|---|
| 현재 버전 만료 | 객체 삭제 (버저닝 없음) 또는 삭제 마커 추가 (버저닝) |
| 이전 버전 삭제 | 버저닝된 객체의 이전 버전 삭제 |
| 삭제 마커 정리 | 만료된 삭제 마커 제거 |
| 미완료 멀티파트 삭제 | 불완전한 멀티파트 업로드 정리 |
스토리지 클래스 전환 규칙
전환 제약 조건
1. 최소 저장 기간
각 스토리지 클래스에는 최소 저장 기간이 있습니다. 이전에 전환하면 최소 기간만큼 과금됩니다.
| 스토리지 클래스 | 최소 저장 기간 |
|---|---|
| Standard | 없음 |
| Standard-IA | 30일 |
| One Zone-IA | 30일 |
| Glacier Instant Retrieval | 90일 |
| Glacier Flexible Retrieval | 90일 |
| Glacier Deep Archive | 180일 |
잘못된 설정 예시:
Standard → (5일 후) → Glacier Instant Retrieval → (10일 후) → Deep Archive
↑
최소 90일 필요!
올바른 설정:
Standard → (5일 후) → Glacier Instant Retrieval → (95일 후) → Deep Archive
│ │
└── 90일 최소 기간 ──────┘
2. 최소 객체 크기
128KB 미만의 객체는 Standard-IA, One Zone-IA, Glacier 클래스로 전환되지 않습니다 (기본 동작). 전환 비용이 스토리지 절감액보다 클 수 있기 때문입니다.
3. 전환 방향 제한
한 번 전환된 객체는 더 비싼 클래스로 되돌릴 수 없습니다 (Lifecycle으로는 불가). 복사 후 삭제로 수동 이동해야 합니다.
시험 팁
시험 포인트: 최소 저장 기간을 위반하면 최소 기간만큼 과금됩니다. Glacier Instant Retrieval에서 30일만에 삭제해도 90일 요금 부과!
Lifecycle 정책 설계
정책 구성 요소
{
"Rules": [
{
"ID": "로그 아카이빙 규칙",
"Status": "Enabled",
"Filter": {
"Prefix": "logs/"
},
"Transitions": [
{
"Days": 30,
"StorageClass": "STANDARD_IA"
},
{
"Days": 90,
"StorageClass": "GLACIER"
}
],
"Expiration": {
"Days": 365
}
}
]
}
필터 옵션
| 필터 | 설명 | 예시 |
|---|---|---|
| Prefix | 접두사로 필터링 | logs/, backup/ |
| Tag | 태그로 필터링 | Environment: Production |
| Object Size | 크기로 필터링 | 128KB 이상만 전환 |
| And | 여러 조건 조합 | Prefix + Tag |
여러 규칙 적용 시 우선순위
동일한 객체에 여러 규칙이 적용될 때:
- 비용 절감이 큰 동작 우선 (규칙 이름, 순서 무관)
- 삭제 > 전환 (같은 날짜인 경우)
- 더 저렴한 클래스로 전환
예시: 두 규칙이 동일 객체에 적용
규칙 A: 30일 후 Standard-IA로 전환
규칙 B: 30일 후 Glacier로 전환
→ 결과: Glacier로 전환 (비용 절감이 더 큼)
사용 사례별 정책 설계
사례 1: 로그 파일 관리
요구사항:
- 최근 로그는 빠른 액세스 필요
- 30일 이후 드물게 액세스
- 1년 후 규정 준수를 위해 아카이브
- 7년 후 삭제
정책 설계:
┌─────────────────────────────────────────────────────────┐
│ 기간 │ 스토리지 클래스 │ 이유 │
├─────────────┼─────────────────────────┼───────────────┤
│ 0-30일 │ Standard │ 활성 분석 │
│ 30-90일 │ Standard-IA │ 드문 액세스 │
│ 90-365일 │ Glacier Instant Retrieval│ 간헐적 조회 │
│ 365-2555일 │ Glacier Deep Archive │ 규정 준수 │
│ 2555일 후 │ 삭제 │ 보관 기간 종료 │
└─────────────────────────────────────────────────────────┘
사례 2: 미디어 파일 관리
요구사항:
- 업로드 후 30일간 자주 액세스 (바이럴 기간)
- 이후 드물게 액세스
- 삭제하지 않음
정책 설계:
Standard (0-30일) → Standard-IA (30일 후)
태그 기반 예외:
- "Featured: Yes" 태그가 있으면 Standard 유지
사례 3: 백업 관리
요구사항:
- 일일 백업: 30일 보관
- 주간 백업: 90일 보관
- 월간 백업: 1년 보관
정책 설계 (접두사 기반):
daily/ → 30일 후 삭제
weekly/ → 30일 Standard → 60일 후 삭제 (총 90일)
monthly/→ 30일 Standard → 60일 Standard-IA → 275일 Glacier → 365일 후 삭제
사례 4: 버저닝된 버킷 관리
요구사항:
- 현재 버전: 장기 보관
- 이전 버전: 30일 후 삭제
- 삭제 마커: 자동 정리
정책 설계:
{
"NoncurrentVersionTransitions": [
{"NoncurrentDays": 30, "StorageClass": "GLACIER"}
],
"NoncurrentVersionExpiration": {
"NoncurrentDays": 90
},
"ExpiredObjectDeleteMarker": true
}
Lifecycle vs Intelligent-Tiering
언제 무엇을 사용할까?
| 조건 | 선택 |
|---|---|
| 액세스 패턴이 예측 가능 | Lifecycle 정책 |
| 액세스 패턴이 예측 불가능 | Intelligent-Tiering |
| 규정 준수로 특정 기간 보관 필요 | Lifecycle 정책 |
| 자동 삭제 필요 | Lifecycle 정책 |
| 모니터링/전환 비용 최소화 | Lifecycle 정책 |
비용 비교
Intelligent-Tiering:
├── 모니터링 비용: $0.0025/1,000객체/월
├── 자동 티어링: Standard → IA (30일), Archive (90일)
└── 전환 비용: 없음
Lifecycle 정책:
├── 모니터링 비용: 없음
├── 수동 규칙 설정 필요
└── 전환 비용: 요청당 과금
시험 팁
시험 포인트: 액세스 패턴을 알 수 없거나 변동이 심하면 Intelligent-Tiering, 패턴이 명확하면 Lifecycle 정책 선택
전환 비용 고려사항
전환 요청 비용
각 객체 전환마다 요청 비용이 발생합니다:
| 전환 대상 | 요청 비용 (1,000건당) |
|---|---|
| Standard-IA | $0.01 |
| One Zone-IA | $0.01 |
| Glacier Instant | $0.02 |
| Glacier Flexible | $0.03 |
| Glacier Deep Archive | $0.05 |
소형 객체 전환 주의
128KB 미만 객체 전환 시 손익분기점:
객체 크기: 10KB
Standard 월 비용: $0.025 × 0.01 = $0.00025
Standard-IA 월 비용: $0.0138 × 0.128 = $0.00177 (128KB 최소 과금)
전환 비용: $0.01/1000 = $0.00001
→ Standard-IA가 오히려 비쌈! (최소 과금 128KB)
시험 팁
시험 포인트: 128KB 미만 객체는 전환하지 않는 것이 기본 동작. 소형 객체가 많으면 Lifecycle 전환이 비용 증가를 초래할 수 있음
모범 사례
1. 단계적 전환
권장: Standard → Standard-IA → Glacier
비권장: Standard → Glacier (바로 전환)
이유:
- 예상치 못한 액세스 시 검색 비용 절감
- 단계별 검증 가능
2. 태그 기반 분류
업로드 시 태그 적용:
- DataType: logs, media, backup
- Retention: 30d, 90d, 1y, 7y
태그별 규칙 생성:
- Retention: 30d → 30일 후 삭제
- Retention: 7y → 365일 후 Deep Archive
3. 미완료 멀티파트 정리
항상 포함할 규칙:
"AbortIncompleteMultipartUpload": {
"DaysAfterInitiation": 7
}
이유: 미완료 멀티파트는 보이지 않지만 비용 발생
4. 버저닝 버킷 관리
이전 버전 정리 규칙 필수:
- NoncurrentVersionExpiration: 이전 버전 삭제
- ExpiredObjectDeleteMarker: 삭제 마커 정리
방치 시 스토리지 비용 계속 증가
SAA-C03 시험 출제 포인트
- ✅ 전환 작업: 저렴한 클래스로 자동 이동
- ✅ 만료 작업: 객체 자동 삭제, 삭제 마커 정리
- ✅ 최소 저장 기간: IA 30일, Glacier Instant 90일, Deep Archive 180일
- ✅ 128KB 제한: 소형 객체는 IA/Glacier 전환 제외 (기본)
- ✅ Lifecycle vs Intelligent-Tiering: 예측 가능 vs 예측 불가능
- ✅ 비용 우선 원칙: 여러 규칙 적용 시 비용 절감이 큰 동작 선택
시험 팁
시험 문제 예시: "회사는 90일 이상 액세스하지 않은 S3 객체의 스토리지 비용을 줄이고 싶습니다. 객체는 액세스 시 즉시 검색이 필요합니다. 가장 비용 효율적인 솔루션은?" → 정답: Lifecycle 정책으로 Glacier Instant Retrieval로 전환 (즉시 검색 + 저비용)
자주 묻는 질문 (FAQ)
Q: Lifecycle 정책은 언제 실행되나요?
매일 UTC 00:00에 평가됩니다. 정확한 실행 시간은 보장되지 않으며, 규칙 생성 후 최대 48시간 내에 첫 실행됩니다. 대량의 객체가 있으면 완료까지 시간이 걸릴 수 있습니다.
Q: 전환된 객체를 다시 Standard로 되돌릴 수 있나요?
Lifecycle으로는 불가능합니다. Glacier에서 Standard로 직접 전환할 수 없습니다. 객체를 복원(Restore)한 후 새 객체로 복사하고 원본을 삭제해야 합니다.
Q: 버저닝된 버킷에서 Lifecycle은 어떻게 동작하나요?
현재 버전과 이전 버전을 별도로 관리합니다. Transitions는 현재 버전에, NoncurrentVersionTransitions는 이전 버전에 적용됩니다. ExpiredObjectDeleteMarker로 삭제 마커도 정리할 수 있습니다.
Q: 최소 저장 기간 전에 삭제하면 어떻게 되나요?
최소 기간만큼 과금됩니다. 예를 들어 Glacier Instant Retrieval에 저장한 객체를 10일 만에 삭제해도 90일치 스토리지 비용이 부과됩니다.
Q: Lifecycle 정책과 Intelligent-Tiering을 함께 사용할 수 있나요?
네, 가능합니다. Standard에서 Intelligent-Tiering으로 전환하는 Lifecycle 규칙을 만들 수 있습니다. 이후 Intelligent-Tiering이 자동으로 액세스 패턴에 따라 티어링합니다.
Q: 객체 잠금(Object Lock)이 있으면 Lifecycle이 적용되나요?
보존 기간 중에는 삭제되지 않습니다. 전환은 가능하지만, 만료(삭제) 작업은 Object Lock 보존 기간이 끝날 때까지 차단됩니다.