SAABlog
비용 관리중급

S3 Lifecycle 정책 설계: 스토리지 비용을 자동으로 최적화하는 방법

S3 Lifecycle 정책으로 객체를 자동으로 저렴한 스토리지 클래스로 전환하거나 삭제하세요. SAA-C03 시험 필수 토픽인 수명 주기 정책 설계를 정리합니다.

PHILOLAMB-
S3Lifecycle비용 최적화스토리지 클래스자동화

관련 시험 도메인

  • 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-IA30일
One Zone-IA30일
Glacier Instant Retrieval90일
Glacier Flexible Retrieval90일
Glacier Deep Archive180일
잘못된 설정 예시:

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

여러 규칙 적용 시 우선순위

동일한 객체에 여러 규칙이 적용될 때:

  1. 비용 절감이 큰 동작 우선 (규칙 이름, 순서 무관)
  2. 삭제 > 전환 (같은 날짜인 경우)
  3. 더 저렴한 클래스로 전환
예시: 두 규칙이 동일 객체에 적용

규칙 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 시험 출제 포인트

  1. 전환 작업: 저렴한 클래스로 자동 이동
  2. 만료 작업: 객체 자동 삭제, 삭제 마커 정리
  3. 최소 저장 기간: IA 30일, Glacier Instant 90일, Deep Archive 180일
  4. 128KB 제한: 소형 객체는 IA/Glacier 전환 제외 (기본)
  5. Lifecycle vs Intelligent-Tiering: 예측 가능 vs 예측 불가능
  6. 비용 우선 원칙: 여러 규칙 적용 시 비용 절감이 큰 동작 선택

시험 팁

시험 문제 예시: "회사는 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 보존 기간이 끝날 때까지 차단됩니다.

관련 글

참고 자료