ECS: 오브젝트 수명주기 정책이 만료되지 않는 버전
Summary: 오브젝트를 자동으로 삭제하기 위해 "만료" 옵션이 포함된 오브젝트 수명주기 정책 구성. 그러나 버킷에 버전 관리가 활성화되어 있으므로 이전 버전이 삭제되지 않습니다.
Symptoms
참고: 아래 문제는 일시 중단되거나 버전 관리가 비활성화된 버킷에는 적용되지 않습니다.
1. 버전 관리가 활성화된 버킷에서 수명 주기 정책은 오브젝트를 만료시키기 위해 아래 예와 같이 설정됩니다. 정책은 자동으로 만료되고 1일 후에 오브젝트를 삭제하도록 구성되었습니다.
<?xml version="1.0" ?> <LifecycleConfiguration xmlns="http://s3.companyaws.com/doc/2006-03-01/"> <Rule> <ID>Expire Objects</ID> <Prefix/> <Status>Enabled</Status> <Expiration> <Days>1</Days> </Expiration> </Rule> </LifecycleConfiguration>
2. 버전이 생성되지 않은 오브젝트의 경우 위의 오브젝트 만료 정책에 따라 현재 오브젝트를 대체하기 위해 에 삭제 마커가 삽입됩니다. 따라서 현재 개체가 삭제되는 대신 현재 버전이 아닌 버전이 됩니다
본보기:
정책이 충족되기 전에 하나의 객체가 있으며 최신 상태입니다.
[VERSION_ID]: 1558539564138 [IS_LATEST]: true [MTIME]: 2019-05-22T15:39:24.138Z [SIZE]: 54270 [OBJECT]: sample.object
정책이 일치한 후(1일 후) 만료가 발생하지만 개체가 이전 버전으로 바뀌고 dmarker가 최신 개체로 삽입됩니다.
[VERSION_ID]: 1558539371262 [IS_LATEST]: false [MTIME]: 2019-05-22T15:36:11.262Z [SIZE]: 54270 [OBJECT]: sample.object >>> original object becomes non current version [VERSION_ID]: 1558539564138 [IS_LATEST]: true [MTIME]: 2019-05-22T15:39:24.138Z [SIZE]: DMARKER [OBJECT]: sample.object >>> DMarker inserted as latest version.
사용자는 이 정책에서 개체가 완전히 삭제되기를 기대합니다.
Cause
버킷 버전 관리에 대해서는 이전 섹션에서 언급한 정책 예시의 예상이 잘못되었습니다. 그러나 버전 관리가 아닌 버킷의 경우에는 오브젝트가 즉시 만료되고 삭제되어 복구할 수 없게 되기 때문에 버전 관리가 되지 않는 버킷의 경우에도 마찬가지입니다.
반면, 버전 관리 버킷의 경우 S3 프로토콜은 오브젝트 만료를 다르게 처리하며, 대신 오브젝트를 현재 버전이 아닌 버전으로 이동합니다. 삭제 마커를 자리 표시자로 추가합니다. 버전 관리 버킷을 사용하면 오브젝트 버전을 복구할 수 있으므로 정책 설정에 따라 유예 기간 복구가 가능합니다. 이는 예상된 동작입니다.
S3의 수명주기 정책, 버전 관리, 만료에 대한 자세한 내용은 이 문서의 맨 아래에 있는 "추가 정보" 섹션의 참조를 참조하십시오.
Resolution
버전이 활성화된 버킷에서는 아래의 수명주기 정책 예제를 사용하는 것이 좋습니다. 대신 이전 버전이 만료되고 마커도 삭제합니다(버전 관리 버킷의 오브젝트에 대한 직접 삭제의 결과).
예:
이 예에서 S3는 현재 오브젝트 버전 각각에 대한 삭제 마커를 추가하여 현재 버전(객체)이 생성된 후 60일 후에 제거합니다. 이 프로세스를 수행하면 현재 버전이 이전 버전이 되고 삭제 마커가 현재 버전이 됩니다.
루트 권한이 필요하지 않은 경우 NoncurrentVersionExpiration 동일한 S3 수명주기 구성의 작업은 최신이 아닌 오브젝트가 된 후 30일 후에 최신이 아닌 오브젝트를 제거합니다. 따라서 이 예에서는 모든 오브젝트 버전이 오브젝트 생성 후 90일 후에 영구적으로 제거됩니다.
중요 참고 사항 : 수명주기 정책은 주의해서 다루어야 하며, 애플리케이션 요구 사항에 맞는 일 수와 작업을 지정합니다. 아래 정책은 예시일 뿐이며, dmarker와 이전 버전이 모두 만료되어 삭제를 복구할 수 없게 됩니다.
<LifecycleConfiguration> <Rule> ... <Expiration> <Days>60</Days> </Expiration> <NoncurrentVersionExpiration> <NoncurrentDays>30</NoncurrentDays> </NoncurrentVersionExpiration> </Rule> </LifecycleConfiguration>
Additional Information
버전이 지정된 버킷과 버전이 지정되지 않은 버킷의 정책 만료 동작에 대한 자세한 내용은 여기에서 확인할 수 있습니다. https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-expire-general-considerations.htmlhttps://docs.aws.amazon.com/AmazonS3/latest/userguide/intro-lifecycle-rules.html#intro-lifecycle-rules-actions
https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-configuration-examples.html#lifecycle-config-conceptual-ex7
수명주기 정책을 설정하는 방법에 대한 자세한 내용은 ECS 데이터 액세스 가이드에서도 확인할 수 있습니다
https://dl.dell.com/content/manual53094723-ecs-3-8-x-data-access-guide.pdf