현재 진행 중인 프로젝트의 이미지 업로드 로직의 플로우는 이랬다.
- 모든 도메인의 파일에 대한 업로드를 할 수 있는
API
를 통해 파일을 선업로드- 해당 파일을 업로드 하고자 하는 도메인을 실제로 생성했을 시, 기존 temp 디렉터리의 파일을 제거하면서 해당 도메인의 디렉터리(ex: blog-post)로 이동
만약 게시글에 5개의 이미지를 업로드 했다면 5개의 temp 디렉터리의 객체들을 삭제하는 추가 과정을 거쳐야 한다.
찾아보니 S3
버킷의 수명 주기 규칙
을 설정해서 내가 원하는 기능인 특정 path에 대한 객체들의 자동 삭제할 수 있는 기능을 지원한다더라.
먼저 S3 Bucket
에서 관리 탭에 들어가서 수명 주기 규칙 생성
을 누르자.
적절한 수명 주기 규칙 이름을 정해주고, 나는 특정 path의 객체만 삭제하는 게 목적이니 하나 이상의 필터를 사용하여 이 규칙의 범위 제한
을 선택해 주자.
그리고 접두사에서 해당 규칙을 적용하고 싶은 path를 적어 주면 된다.
나는 temp/ 라는 prefix를 가진 객체들을 삭제해 주고 싶으므로 사진처럼 해주었다.
파란 박스 안에 있는 것들은 Standard-IA
, One Zone-IA
등 객체를 다른 스토리지 클래스로 이동하는 작업이고 해당 글에서 다루진 않겠다.
객체 생성 후 경과 일수
에 준 값의 날짜가 지나면 객체에 삭제 마커를 추가하고 버전을 만료시킨다.UTC
기준 00:00(KST 09:00)에 객체의 버전을 만료시키고, 버전이 만료된 다음 날 같은 시간에 객체를 삭제시킨다.객체의 이전 버전 영구 삭제
작업도 함께 적용해야 객체를 삭제시킨다.만료된 객체 삭제 마커 또는 완료되지 않은 멀티파트 업로드 삭제
는 해당 글에서 알아볼 필요는 없을 것 같아서 생략한다.
나는 버저닝을 하고 있지 않으니, 객체의 현재 버전 만료
작업만 객체가 업로드된 1일 이후 만료될 수 있게 설정해서 수명 주기 규칙
을 생성했다.
이후 버킷에 객체를 업로드해서 속성 - 객체 관리 개요 탭으로 가보면
2025.3.6일 09:00(UTC 00:00) 시에 삭제되도록 잘 설정된 것을 확인할 수 있다.