S3 버전 관리를 켜면 같은 이름의 객체를 덮어쓰거나 지워도 이전 버전이 남아 실수를 되돌릴 수 있습니다. 대신 이전 버전이 계속 쌓여 저장 비용이 늘기 때문에, 보통은 수명 주기 규칙을 함께 만듭니다. 이 글에서는 빈 버킷에 버전 관리를 켜고 이전 버전을 정리하는 규칙까지 만들어 봅니다. 이 실습에서는 객체를 올리지 않았으므로 실제로 버전이 생기고 지워지는 모습은 다루지 않습니다.
준비물
| 항목 | 내용 |
|---|---|
| AWS 계정 | 실습용 IAM 사용자. 버킷 생성과 삭제, 버전 관리 변경(s3:PutBucketVersioning), 수명 주기 구성(s3:PutLifecycleConfiguration) 권한이 필요한 것으로 알려져 있으며 이 권한 목록은 하나씩 시험하지 않았습니다 |
| 리전 | 아시아 태평양(서울) ap-northeast-2 |
| 버킷 이름 | cr-demo-version-1018. 이름이 이미 쓰이고 있으면 끝의 숫자를 바꿉니다 |
| 규칙 이름 | cr-demo-expire-old-versions |
| 예상 소요 시간 | 약 30분(예상치) |
| 변경 사항 | 버킷 1개 생성, 버전 관리 켜기, 수명 주기 규칙 1개 생성. 마지막에 버킷을 삭제합니다 |
화면의 계정 정보는 가렸습니다. 버킷 만들기 화면은 S3 버킷 보안 기본값 글과 같아 이름만 입력하고 기본값으로 만들었습니다.
1. 버킷 만들고 버전 관리 상태 보기
S3 콘솔 위쪽에서 리전을 서울로 맞추고 버킷 만들기로 cr-demo-version-1018을 만듭니다.

속성 탭에서 버킷 버전 관리 칸을 봅니다.

새 버킷의 버전 관리는 비활성됨입니다. 편집을 누릅니다.
2. 버전 관리 켜기
편집 화면의 선택지는 일시 중지와 활성화 두 가지입니다. 활성화를 선택합니다. 한 번 켠 버전 관리는 AWS 문서 기준으로 비활성됨으로 되돌릴 수 없고 일시 중지만 할 수 있습니다(이 실습에서 시험하지 않았습니다).

활성화를 고르면 파란 상자에 버킷 버전 관리를 활성화한 후 객체의 이전 버전을 관리하려면 수명 주기 규칙을 업데이트해야 할 수 있습니다.라는 안내가 나타납니다. 이 안내가 이 글의 다음 단계입니다. 오른쪽 아래 변경 사항 저장을 누릅니다.

저장하면 알림에 이전 객체 버전을 이전, 아카이빙 또는 삭제하려면 수명 주기 규칙을 구성하라는 안내가 붙고, 속성 칸은 활성화됨으로 바뀝니다. MFA 삭제는 비활성됨 그대로입니다. 이 설정은 콘솔이 아니라 AWS CLI나 API로만 바꿀 수 있다고 화면에 적혀 있어 이 글에서는 다루지 않았습니다.
3. 수명 주기 규칙 만들기
관리 탭을 엽니다. 수명 주기 규칙 칸에는 규칙이 없고 수명 주기 규칙 생성 단추가 있습니다.

단추를 누르고 아래처럼 입력합니다.
| 화면 | 입력칸 | 입력값 |
|---|---|---|
| 수명 주기 규칙 구성 | 수명 주기 규칙 이름 | cr-demo-expire-old-versions |
| 수명 주기 규칙 구성 | 규칙 범위 선택 | 하나 이상의 필터를 사용하여 이 규칙의 범위 제한 |
| 수명 주기 규칙 구성 | 접두사 | docs/ |
| 수명 주기 규칙 작업 | 선택할 작업 | 객체의 이전 버전 영구 삭제 |
| 객체의 이전 버전 영구 삭제 | 객체가 최신이 아닌 상태로 전환된 후 경과 일수 | 30 |
| 객체의 이전 버전 영구 삭제 | 보관할 새 버전 수 | 2 |

범위를 버킷의 모든 객체에 적용으로 고르면 버킷 전체가 대상이 됩니다. 이 실습에서는 접두사 docs/로 범위를 좁혔고, 모든 객체 옵션은 선택하지 않았습니다. 아래로 내리면 수명 주기 규칙 작업 칸에 다섯 가지 작업이 있습니다.

작업은 다음과 같습니다.
- 스토리지 클래스 간에 객체의 현재 버전 전환
- 스토리지 클래스 간에 객체의 이전 버전 전환
- 객체의 현재 버전 만료
- 객체의 이전 버전 영구 삭제
- 만료된 객체 삭제 마커 또는 완료되지 않은 멀티파트 업로드 삭제(이 항목은 태그나 크기를 기준으로 필터링할 때 지원되지 않는다고 화면에 적혀 있습니다)
객체의 이전 버전 영구 삭제를 체크하고 일수와 보관할 버전 수를 입력하면 아래 전환 및 만료 작업 검토 칸이 채워집니다.

보관할 새 버전 수라는 이름이 헷갈리지만, 검토 칸의 문장대로 현재 버전이 아니라 이전 버전 중 가장 최신 것 몇 개를 남기라는 뜻입니다. 입력칸 아래 도움말은 "다른 모든 이전 버전이 이동됩니다"라고 적혀 있지만 이 규칙의 작업은 영구 삭제이고 검토 칸도 영구 삭제로 표시합니다. 검토 칸이 이 규칙이 하는 일을 문장으로 보여 줍니다. 객체가 최신 상태가 아니게 된 날(0일)부터 30일이 지나면 이전 버전 중 가장 최신 버전 2개를 남기고 다른 이전 버전은 영구 삭제합니다. 규칙 생성을 누릅니다.

목록에 규칙이 Enabled로 나타나고 범위는 필터링됨, 이전 버전 작업 열은 영구 삭제입니다. 화면 안내에 따르면 수명 주기 규칙은 하루에 한 번 실행되고, 구성을 업데이트하는 데 시간이 걸릴 수 있습니다. 이 실습에서는 규칙이 실제로 실행되는지 보지 않았습니다.
4. 정리: 버킷 삭제
버킷 목록에서 cr-demo-version-1018만 선택하고 삭제를 누릅니다.

화면 제목의 버킷 이름이 지우려는 버킷과 같은지 확인한 뒤 이름을 입력하고 버킷 삭제를 누릅니다.

삭제 뒤 목록에는 이미 있던 버킷 1개가 남았고, 이름은 가렸습니다. 이 버킷은 이 실습에서 다루지 않았습니다. 이 실습의 버킷은 객체가 없어서 바로 삭제되었습니다. 수명 주기 규칙이 버킷과 함께 사라지는지, 객체와 버전이 있는 버킷은 삭제 전에 모두 비워야 하는지는 AWS 문서를 근거로 한 설명이며 이 실습에서 확인하지 않았습니다.
자주 막히는 곳
- 버전 관리를 켰는데 이전 버전이 안 줄어드는 경우: 이전 버전은 수명 주기 규칙이 없으면 계속 남는 것으로 알려져 있습니다. 이 글의 규칙이 있어도 접두사
docs/밖의 객체, 이전 버전이 된 지 30일이 안 된 것, 남기도록 한 최신 이전 버전 2개는 이 규칙으로 지워지지 않습니다(문서 기준, 이 실습에서 시험하지 않았습니다). - 범위를 모든 객체로 고르는 경우: 규칙이 버킷 전체에 적용됩니다. 운영 버킷에서는 접두사나 태그로 범위를 좁혀 먼저 시험하는 편이 안전합니다.
- 규칙이 목록에 보이지 않는 경우: 화면 안내에 따라 목록을 새로 고칩니다. 구성 반영에 시간이 걸릴 수 있다고 적혀 있습니다.
보관할 새 버전 수를 비워 두는 경우: 이 칸은 선택 사항입니다. 비워 두었을 때의 동작은 이 실습에서 확인하지 않았고, 문서 기준으로는 일수가 지난 이전 버전이 모두 삭제되는 것으로 알려져 있습니다.
이어서 해 볼 것
- 객체를 같은 이름으로 두세 번 올려 보고, 객체 목록의
버전 표시를 켜서 버전 ID가 여러 개 생기는지 확인하기 - 객체를 삭제했을 때 삭제 마커가 생기는지 보고, 마커를 지워 객체를 되살려 보기
만료된 객체 삭제 마커작업을 함께 체크해 마커가 정리되는지 보기- CloudTrail 이벤트 기록 글에서
PutBucketVersioning과PutBucketLifecycle이벤트 찾아보기
확인한 범위와 확인하지 않은 것
- 확인한 것: 버킷 생성, 버전 관리 비활성에서 활성으로 변경, 수명 주기 규칙 생성 화면과 검토 칸, 규칙 목록 표시, 버킷 삭제.
- 확인하지 않은 것: 객체를 올렸을 때 버전이 생기는 동작, 삭제 마커, 규칙이 실제로 이전 버전을 지우는지, 규칙이 실행되는 시각, 버전 관리를 켠 뒤 일시 중지했을 때의 상태. 일시 중지 선택지의 효과는 화면 문구(
모든 작업에 대한 객체 버전 생성을 일시 중지하고 기존 객체 버전은 보관합니다)만 확인했습니다. 화면 문구는 이 실습 시점의 한국어 콘솔 기준입니다.
이 글의 다음 단계
- AWS CloudTrail 이벤트 기록에서 누가 언제 무엇을 했는지 읽기CloudTrail 이벤트 기록 화면에서 최근 변경 이벤트를 보고, 리소스 이름으로 걸러 한 보안 그룹의 생성부터 삭제까지를 추적합니다. 이벤트 상세와 JSON 레코드에서 사용자, 시각, 호출 내용, MFA 여부를 읽는 방법을 정리합니다.
- AWS 콘솔에서 EC2에 IAM 역할을 연결해 액세스 키 없이 S3 읽기 권한 주기IAM 콘솔에서 EC2용 역할 cr-demo-ec2-s3-read-role을 만들고 AmazonS3ReadOnlyAccess를 붙인 뒤, EC2 시작 화면의 고급 세부 정보에서 인스턴스에 연결합니다. 신뢰 정책과 권한 정책의 역할을 읽고, 인스턴스와 역할을 삭제해 정리합니다.