[AWS] S3 수명주기 규칙

2innnnn0·2024년 9월 30일

수명주기 규칙

Q. 아래 두가지 옵션중에 뭐가 삭제하는거야?

  1. 객체의 현재 버전 만료
  2. 객체의 이전 버전 영구 삭제

A.

두 가지 옵션 모두 객체를 삭제하는 기능을 가지고 있지만, 용도와 시기가 다릅니다. 설명은 다음과 같습니다:

  1. 객체의 현재 버전 만료 (Expire current versions of objects):

    • 기능: S3 버킷에서 객체의 "현재 버전"을 만료시키는 옵션입니다. 만료된 객체는 즉시 삭제되는 것이 아니라, "Delete Marker"가 설정되어 보이지 않게 됩니다.
    • 용도: 버전 관리가 활성화된 버킷의 경우, 객체의 가장 최근 버전(현재 버전)이 만료됩니다. 버전 관리가 활성화되어 있지 않다면 이 설정은 객체를 영구적으로 삭제하는 것과 동일한 효과를 가집니다.
    • 결과: "현재 버전 만료"를 설정하면 가장 최근에 업로드된 객체가 만료되어 사용 불가 상태가 되며, S3 콘솔에서는 해당 객체가 사라진 것처럼 보이게 됩니다.
  2. 객체의 이전 버전 영구 삭제 (Permanently delete previous versions of objects):

    • 기능: 객체의 이전 버전들을 완전히 삭제하는 옵션입니다. 이 옵션은 버전 관리가 활성화된 S3 버킷에서만 적용되며, 이전 버전들이 완전히 제거되므로 비용을 절감할 수 있습니다.
    • 용도: 버전 관리가 활성화된 버킷의 경우, 객체를 업데이트하거나 삭제할 때 이전 버전이 남아 있게 되는데, 이 옵션은 이러한 이전 버전들을 영구적으로 삭제합니다.
    • 결과: 설정된 규칙에 따라 이전 버전의 객체들을 완전히 삭제하여 더 이상 복구할 수 없게 됩니다.

어떤 옵션이 "삭제"하는 것인가?

  • 버전 관리가 활성화되어 있다면, "이전 버전 영구 삭제" 옵션이 실제로 이전 버전의 데이터를 완전히 제거하는 것이므로 진정한 의미의 "삭제"에 해당합니다.
  • 반면, "현재 버전 만료"는 현재 버전을 사용할 수 없게 만드는 것이지만, 버전 관리가 활성화된 경우에는 "Delete Marker"가 추가되어 보이지 않게 되는 것이지 실제 데이터가 삭제되는 것은 아닙니다. (버전 관리가 활성화되지 않은 경우에는 이 옵션이 객체를 완전히 삭제합니다.)

권장 사항

  • 만약 버전 관리를 사용하고 있고 쿼리 결과를 오래 보관할 필요가 없다면, "이전 버전 영구 삭제"를 사용하여 비용을 줄일 수 있습니다.
  • 버전 관리를 사용하지 않는다면 "현재 버전 만료"만 사용해도 객체를 효과적으로 삭제할 수 있습니다.

--

Q. 두 옵션을 동시에 선택할수 있네? 둘다 선택하면 어떻게 되는거야?

A.

두 옵션을 동시에 선택하면 다음과 같은 동작이 일어납니다:

  1. 객체의 현재 버전 만료 (Expire current versions of objects):

    • 이 규칙에 따라 객체의 "현재 버전"이 만료되면서 Delete Marker가 생성됩니다. 이 Delete Marker는 해당 객체가 S3 버킷에서 삭제된 것처럼 보이게 합니다. 즉, "현재 버전"의 접근이 막히고, 객체는 사용 불가 상태가 됩니다.
    • 버전 관리를 사용하지 않는 경우에는 이 만료가 곧 객체의 영구 삭제를 의미합니다.
  2. 객체의 이전 버전 영구 삭제 (Permanently delete previous versions of objects):

    • 이 규칙에 따라 이전 버전의 객체가 완전히 삭제됩니다. 만약 버전 관리가 활성화되어 있고 객체에 이전 버전들이 존재한다면, 이 규칙은 이러한 이전 버전들을 완전히 지워 버립니다.

두 옵션을 동시에 선택할 경우의 동작

  • 버전 관리가 활성화되어 있는 경우:

    • 현재 버전 만료 옵션이 적용되어 객체의 현재 버전에 Delete Marker가 생성됩니다.
    • 이전 버전 영구 삭제 옵션이 적용되어 객체의 이전 버전들은 완전히 삭제됩니다.
    • 결과적으로 S3 버킷에서는 현재 버전이 만료되면서 Delete Marker가 생성되고, 이전 버전은 완전히 사라지므로 최종적으로는 Delete Marker만 남게 됩니다.
  • 버전 관리가 활성화되어 있지 않은 경우:

    • 현재 버전 만료가 객체를 완전히 삭제하는 것으로 동작합니다.
    • 이전 버전 영구 삭제는 버전 관리가 활성화되어 있지 않으므로 적용되지 않습니다.
    • 결국 객체의 현재 버전이 삭제됩니다.

정리

  • 두 옵션을 동시에 선택하면 버전 관리가 활성화된 경우에만 두 가지 규칙이 각각 적용됩니다. 현재 버전은 Delete Marker로 대체되고, 이전 버전은 완전히 삭제됩니다.
  • 버전 관리가 활성화되어 있지 않다면, 두 옵션 중 현재 버전 만료만 적용되어 객체가 완전히 삭제됩니다.

만약 쿼리 결과 데이터를 오래 보관할 필요가 없다면, 이 두 옵션을 함께 선택하는 것이 적절하며, 버전 관리가 활성화되어 있어도 데이터 보관 비용을 최소화할 수 있습니다.

profile
성장한 데이터분석가

0개의 댓글