S3 Bucket의 라이프사이클 객체 버전 만료에 대해 이해하자!

S3 Bucket의 라이프사이클 액션 중 하나인「객체 버전 만료」에 대해 정리해 봤습니다.
2023.11.07

안녕하세요 클래스메소드 김재욱(Kim Jaewook) 입니다. 이번에는 S3 Bucket의 라이프사이클 액션 중 하나인「객체 버전 만료」에 대해 정리해 봤습니다.

라이프사이클 규칙 생성은?

  • 「관리」를 클릭하여 라이프사이클 규칙 목록을 볼 수 있습니다.
  • 「수명 주기 규칙 생성」을 클릭합니다.

  • 라이프사이클 규칙 이름을 입력합니다.
  • 규칙 범위를 선택합니다.
    • 하나 이상의 필터를 사용하여 이 규칙의 범위 제한
      • 지정된 경로에 규칙을 적용합니다.
    • 버킷의 모든 객체에 적용
      • 버킷 내부의 모든 폴더에 규칙을 적용합니다.
  • 규칙을 적용할 S3 버킷의 경로를 지정합니다.
    • ex) Images/
      • Images/test.txt 와 같은 특정 파일을 지정할 수는 없습니다.

  • 최소 객체 크기
    • 특정 크기 이상의 객체에만 수명 주기 규칙이 적용되도록 지정합니다.
  • 최대 객체 크기
    • 특정 크기 이하의 객체에만 수명 주기 규칙이 적용되도록 지정합니다.

  • 라이프사이클 규칙 작업을 선택합니다.
    • 특정 기간이 지나면 객체가 삭제 혹은 만료되도록「객체의 현재 버전 만료」를 체크합니다.
  • 객체 생성 후 경과 일수를 입력합니다.
    • 지정한 기간이 지난 객체는 삭제됩니다.

설정이 끝났다면, 저장을 누르고 라이프사이클 규칙 생성을 끝마칩니다.

의문점

이렇게 라이프사이클 규칙을 생성하면서 한 가지 의문점이 생겼습니다.

이번 라이프사이클 규칙에서는 지정한 기간이 지난 객체는 삭제하고 싶다는 설정인데, 아래 규칙 작업 리스트를 보면

  • 스토리지 클래스 간에 객체의 현재 버전 이동
  • 스토리지 클래스 간에 객체의 이전 버전 이동
  • 객체의 현재 버전 만료
  • 객체의 이전 버전 영구 삭제
  • 만료된 객체 삭제 마커 또는 완료되지 않은 멀티파트 업로드 삭제

객체의 현재 버전 만료와 객체의 이전 버전 영구 삭제가 신경쓰이기 시작했습니다.

둘 다 체크를 해놓는다면, 지정한 시간이 지난 객체가 만료가 되어 이전 버전으로 전환 → 이전 버전의 영구 삭제가 이루어지는 것이 아닐까? 생각했습니다.

여기서 나오는 것이 바로「버전 관리」입니다.

버전 관리에 대한 상세한 내용은 아래 블로그를 참고해 주세요.

  • 객체의 이전 버전 영구 삭제

상기 항목 체크에 대한 유무는 버전 관리에 달렸습니다.

  • 객체의 현재 버전 만료

버전 관리를 활성화한 상태에서, 상기 항목을 체크한다면, 일정 기간이 경과한 객체는 이전 버전으로 삭제되지 않고 유지됩니다.

즉 삭제되지 않고, 이전 버전으로 설정됩니다.

여기서 이전 버전으로 설정된 객체를 삭제하기 위해서는「객체의 이전 버전 영구 삭제」를 체크할 필요가 있습니다.

반대로 버전 관리를 비활성화 했다면, 이전 버전으로 유지되지 않고 객체가 삭제됩니다.

마무리

  • 객체의 현재 버전 만료
  • 객체의 이전 버전 영구 삭제

라이프사이클에서 상기 체크 항목들이 각각 어떤 의미를 하는 지 모르는 채로 생성을 해왔다면, 불필요한 코스트를 낭비하고 있을 가능성이 있습니다.

S3 버킷 비용에 관해서는 아래 공식 문서를 참고해 주세요.

정리하자면 버전 관리를 활성화한 상태에서 일정 기간이 지난 객체를 삭제하고 싶다면 아래 두 항목을 체크합니다.

  • 객체의 현재 버전 만료
  • 객체의 이전 버전 영구 삭제

반대로 버전 관리를 비활성화한 상태에서 일정 기간이 지난 객체를 삭제하고 싶다면 아래 항목을 체크합니다.

  • 객체의 현재 버전 만료

본 블로그 게시글을 읽고 궁금한 사항이 있으신 분들은 kis2702@naver.com로 보내주시면 감사하겠습니다.