AWS S3 수명 주기 규칙을 설정해서 자동으로 객체를 삭제해보자

정비호·2025년 3월 4일
1

사이드 프로젝트

목록 보기
4/5
post-thumbnail

현재 진행 중인 프로젝트의 이미지 업로드 로직의 플로우는 이랬다.

  1. 모든 도메인의 파일에 대한 업로드를 할 수 있는 API를 통해 파일을 선업로드
  2. 해당 파일을 업로드 하고자 하는 도메인을 실제로 생성했을 시, 기존 temp 디렉터리의 파일을 제거하면서 해당 도메인의 디렉터리(ex: blog-post)로 이동

만약 게시글에 5개의 이미지를 업로드 했다면 5개의 temp 디렉터리의 객체들을 삭제하는 추가 과정을 거쳐야 한다.

찾아보니 S3 버킷의 수명 주기 규칙을 설정해서 내가 원하는 기능인 특정 path에 대한 객체들의 자동 삭제할 수 있는 기능을 지원한다더라.

S3 수명 주기 규칙

먼저 S3 Bucket에서 관리 탭에 들어가서 수명 주기 규칙 생성을 누르자.

적절한 수명 주기 규칙 이름을 정해주고, 나는 특정 path의 객체만 삭제하는 게 목적이니 하나 이상의 필터를 사용하여 이 규칙의 범위 제한을 선택해 주자.
그리고 접두사에서 해당 규칙을 적용하고 싶은 path를 적어 주면 된다.
나는 temp/ 라는 prefix를 가진 객체들을 삭제해 주고 싶으므로 사진처럼 해주었다.

파란 박스 안에 있는 것들은 Standard-IA, One Zone-IA 등 객체를 다른 스토리지 클래스로 이동하는 작업이고 해당 글에서 다루진 않겠다.

  • 객체의 현재 버전 만료
    • 객체 생성 후 경과 일수에 준 값의 날짜가 지나면 객체에 삭제 마커를 추가하고 버전을 만료시킨다.
    • 만약 버저닝을 하고 있지 않은 버킷이라면 S3에서 객체를 제거해 버린다.
      • 바로 제거하진 않는다.
        만약 만료시키는 일수를 1일로 설정했다면 업로드 다음 날 UTC 기준 00:00(KST 09:00)에 객체의 버전을 만료시키고, 버전이 만료된 다음 날 같은 시간에 객체를 삭제시킨다.
      • 버저닝을 하고 있다면 객체의 이전 버전 영구 삭제 작업도 함께 적용해야 객체를 삭제시킨다.
  • 객체의 이전 버전 영구 삭제

    객체가 현재 버전이 아니게 되면, 설정한 일수 이후에 객체를 삭제시킨다.

만료된 객체 삭제 마커 또는 완료되지 않은 멀티파트 업로드 삭제는 해당 글에서 알아볼 필요는 없을 것 같아서 생략한다.

나는 버저닝을 하고 있지 않으니, 객체의 현재 버전 만료 작업만 객체가 업로드된 1일 이후 만료될 수 있게 설정해서 수명 주기 규칙을 생성했다.

이후 버킷에 객체를 업로드해서 속성 - 객체 관리 개요 탭으로 가보면

2025.3.6일 09:00(UTC 00:00) 시에 삭제되도록 잘 설정된 것을 확인할 수 있다.

profile
잘하고 싶은 개발자

0개의 댓글

관련 채용 정보