← 아티클 목록

S3 수명주기 정책으로 스토리지 비용 절감하기

2027-06-21#S3#AWS#비용최적화

S3 청구서가 매달 조용히 늘어나는데 정작 최근에 쓰는 데이터는 얼마 안 됩니다. 로그, 백업, 옛 업로드가 한 번 올라온 뒤 아무도 안 보는데 계속 표준 요금을 내고 있는 겁니다. 수명주기 정책(Lifecycle Policy) 은 이런 "식어버린" 데이터를 자동으로 더 싼 등급으로 옮기거나 삭제해 줍니다.

스토리지 클래스와 비용

같은 1GB라도 어느 클래스에 두느냐에 따라 단가가 크게 달라집니다. 접근 빈도가 낮을수록 저장 단가는 싸지지만, 꺼낼 때 비용·지연이 붙습니다.

클래스적합한 데이터특징
Standard자주 읽는 최신 데이터저장 단가 높음, 즉시 접근
Standard-IA가끔 읽는 데이터 (30일+)저장 싸고, 읽기당 요금
Glacier Instant분기에 한 번 수준더 싸고 즉시 꺼냄
Glacier Deep Archive규제용 장기 보관가장 쌈, 복원 수 시간

자주 안 보는데 Standard에 있는 데이터가 비용의 주범입니다. 어디에 무엇이 쌓이는지는 S3 Storage Lens나 스토리지 클래스 분석으로 먼저 봅니다.

수명주기 정책 만들기

정책은 "올린 지 N일 지나면 다른 클래스로 전환, M일 지나면 삭제" 규칙의 묶음입니다. 접두사(prefix)나 태그로 대상을 좁힐 수 있습니다.

JSON
{
  "Rules": [{
    "ID": "logs-archive-and-expire",
    "Filter": { "Prefix": "logs/" },
    "Status": "Enabled",
    "Transitions": [
      { "Days": 30,  "StorageClass": "STANDARD_IA" },
      { "Days": 90,  "StorageClass": "GLACIER" }
    ],
    "Expiration": { "Days": 365 }
  }]
}

이 규칙은 logs/ 아래 객체를 30일 후 IA로, 90일 후 Glacier로 옮기고 365일이 지나면 삭제합니다. CLI로는 다음처럼 적용합니다.

로컬 터미널
aws s3api put-bucket-lifecycle-configuration \
  --bucket my-bucket \
  --lifecycle-configuration file://lifecycle.json

적용 순서와 주의점

  1. 분석 먼저 — Storage Lens로 어떤 접두사가 비용을 먹는지 확인합니다.
  2. 전환 비용 확인 — 클래스 전환 자체에 객체당 소액 요청 비용이 듭니다. 작은 파일 수백만 개를 IA로 옮기면 절감보다 전환 비용이 더 클 수 있습니다.
  3. 최소 보관 기간 주의 — IA·Glacier는 최소 저장 기간(30~90일)이 있어 그 전에 지우면 위약 요금이 붙습니다.
  4. 불완전 멀티파트 정리 — 실패한 업로드 조각이 보이지 않게 쌓입니다. AbortIncompleteMultipartUpload 규칙을 함께 넣습니다.
  5. 버전 관리 버킷 — 버저닝을 켰다면 구버전(noncurrent) 만료 규칙도 따로 둬야 진짜로 줄어듭니다.

요점 정리

  • 비용의 주범은 자주 안 보는데 Standard에 남아 있는 데이터다.
  • 수명주기 정책으로 IA → Glacier 전환·만료를 자동화한다.
  • 작은 파일 다수는 전환 비용이, IA·Glacier는 최소 보관 기간이 함정이다.
  • 멀티파트 조각·구버전 정리 규칙을 같이 넣어야 실제로 줄어든다.

수명주기 정책을 직접 작성해 스토리지 클래스 전환을 확인하는 실습은 클라우드 트랙에서 회원가입 없이 무료로 할 수 있습니다.