본문 바로가기

직접 만든 소프트웨어, 두 가지 개발 기록

구현 구조와 적용 범위, 확인한 기능과 남은 한계를 함께 기록합니다.

소프트웨어개발

S3 만료 후 용량이 남는 이유: 삭제 마커와 비현재 버전 구분

by 아빠띠띠뽀 2026. 10. 24.

저장 데이터와 과거 시점 보관본을 나누어 표현한 개념 그림
직접 생성한 개념 이미지입니다. 실제 서비스 화면이나 구축·성능 시험 결과가 아닙니다.

버전 관리가 켜진 S3 버킷에서는 현재 객체를 만료시켜도 이전 데이터 버전이 남을 수 있습니다. 목록에서 사라졌다는 사실과 저장 데이터가 영구 삭제됐다는 사실을 구분해야 합니다.

적용 환경: Amazon S3 버전 관리 Enabled 버킷; Suspended와 Object Lock은 별도 확인. 공식 문서 확인일: 2026-10-23. 아래 내용은 문서 기반 점검 가이드이며 운영 환경에서 실행한 시험 결과가 아닙니다.

1. 원인: 현재 목록이 전체 저장량은 아닙니다

Enabled 버킷의 현재 버전 만료는 삭제 마커를 현재 버전으로 만들고 기존 데이터를 비현재 버전으로 남기는 방식입니다. 비현재 버전도 저장되어 있는 동안 비용 검토 대상입니다. 삭제 마커는 원본 데이터의 영구 삭제 증명이 아닙니다.

구분 확인할 의미
현재 데이터 버전 기본 조회에서 접근하는 데이터
비현재 데이터 버전 이전 내용으로 남아 있는 데이터
삭제 마커 기본 조회에서 삭제된 것으로 보이게 하는 표시

2. 해결 순서: 규칙 범위를 먼저 읽습니다

버킷의 실제 버전 관리 상태부터 확인합니다. 이 글은 Enabled 상태를 기준으로 하며, 중지(Suspended) 상태의 null 버전 동작을 같은 것으로 취급하지 않습니다.

다음으로 Lifecycle 규칙의 활성화 여부와 접두사·태그 등 필터를 확인합니다. 대상 객체가 규칙 밖에 있으면 보존 일수만 바꿔도 의도대로 적용되지 않습니다. 현재 버전의 Expiration과 비현재 버전의 NoncurrentVersionExpiration을 별도 항목으로 읽으세요.

오래된 버전이 필요한 복구 기간, 법적 보존, Object Lock 등 제약을 먼저 정합니다. 비용을 줄이려고 비현재 버전 만료를 즉시 추가하지 말고, 작은 시험 범위에서 영향과 복구 가능성을 검토합니다.

3. 확인: 버전 수와 저장량을 함께 봅니다

콘솔의 버전 표시와 Storage Lens 등 허용된 조회로 현재·비현재 버전을 구분합니다. 점검 기록에는 버킷, 규칙 필터, 버전 상태, 관찰 시각을 남기세요. 화면에서 객체 이름이 사라진 것만으로 저장 비용이 즉시 0이 됐다고 보고하지 않습니다.

4. 주의와 FAQ

비현재 버전 만료를 취소하면 복구되나요? 이미 영구 삭제된 버전은 규칙을 되돌려도 복구되지 않습니다. 원본 보존과 복구 요구를 사전에 확인해야 합니다.

삭제 마커만 정리하면 용량이 해결되나요? 데이터 버전이 따로 남아 있는지 먼저 봅니다. 마커와 데이터는 다른 대상입니다.

이 글에 삭제 명령이 없는 이유는? 버킷별 보존 조건을 확인하지 않은 일괄 삭제는 위험합니다. 여기서는 읽기 중심의 원인 분류까지만 다룹니다.

공식 출처와 이어 읽기

버전 삭제와 만료

Lifecycle 규칙 구성

S3 복제와 과거 시점 복구 비교