수명 주기 구성의 요소 - Amazon Simple Storage Service

수명 주기 구성의 요소

S3 수명 주기 구성을 하나 이상의 수명 주기 규칙으로 이루어진 XML로 지정합니다.

<LifecycleConfiguration> <Rule> ... </Rule> <Rule> ... </Rule> </LifecycleConfiguration>

각 규칙은 다음과 같은 요소로 구성됩니다.

  • 규칙 메타데이터에는 규칙 ID와 규칙의 활성화 여부를 나타내는 상태가 포함됩니다. 규칙이 비활성화되면 Amazon S3은 규칙에 지정된 작업을 수행하지 않습니다.

  • 규칙이 적용되는 객체를 식별하는 필터. 객체 키 접두사, 하나 이상의 객체 태그 또는 이 두 가지를 모두 사용하여 필터를 지정할 수 있습니다.

  • Amazon S3이 객체 수명 주기의 특정 날짜 또는 기간 동안 지정된 작업을 수행하기를 원하는 하나 이상의 전환 또는 만료 작업

다음 단원에서는 S3 수명 주기 구성의 XML 요소에 대해 설명합니다. 구성에 대한 예시는 수명 주기 구성의 예제 단원을 참조하세요.

ID 요소

한 S3 수명 주기 구성에서 최대 1,000개의 규칙을 설정할 수 있으며, 이 제한은 조정할 수 없습니다. <ID> 요소는 각 규칙을 고유하게 식별합니다. ID 길이는 255자로 제한됩니다.

상태 요소

<Status> 요소 값은 Enabled 또는 Disabled입니다. 규칙이 비활성화되면 Amazon S3은 규칙에 정의된 작업을 수행하지 않습니다.

필터 요소

수명 주기 규칙은 수명 주기 규칙에서 지정하는 <Filter> 요소에 기반하여 버킷 내 객체의 모든 하위 집합 또는 하나의 하위 집합에 적용될 수 있습니다.

키 접두사, 객체 태그 또는 이 둘의 조합으로 객체를 필터링할 수 있습니다. 조합하는 경우, Amazon S3은 논리적 AND를 사용하여 필터를 조합합니다. 다음 예제를 고려하세요.

  • 키 접두사를 사용하여 필터 지정 – 이 예제는 키 이름 접두사(logs/)에 기반하여 객체의 하위 집합에 적용되는 S3 수명 주기 규칙을 보여줍니다. 예를 들어, 이 수명 주기 규칙은 객체 logs/mylog.txt, logs/temp1.txtlogs/test.txt에 적용됩니다. 이 규칙은 객체 example.jpg에는 적용되지 않습니다.

    <LifecycleConfiguration> <Rule> <Filter> <Prefix>logs/</Prefix> </Filter> transition/expiration actions. ... </Rule> ... </LifecycleConfiguration>

    다른 키 이름 접두사에 기반하여 객체의 하위 집합에 수명 주기 작업을 적용하려면 별도의 규칙을 지정하세요. 각각의 규칙에서 접두사 기반 필터를 지정하세요. 예를 들어, 키 접두사 projectA/projectB/를 가진 객체의 수명 주기 작업을 설명하려면 아래와 같이 두 가지 규칙을 지정합니다.

    <LifecycleConfiguration> <Rule> <Filter> <Prefix>projectA/</Prefix> </Filter> transition/expiration actions. ... </Rule> <Rule> <Filter> <Prefix>projectB/</Prefix> </Filter> transition/expiration actions. ... </Rule> </LifecycleConfiguration>

    객체 키에 대한 자세한 내용은 객체 키 이름 생성 단원을 참조하세요.

  • 객체 태그에 기반한 필터 지정 - 다음 예제에서 수명 주기 규칙은 태그(key)와 값(value)에 기반하여 필터를 지정합니다. 그러면 규칙은 특정 태그를 가진 객체의 하위 집합에만 적용됩니다.

    <LifecycleConfiguration> <Rule> <Filter> <Tag> <Key>key</Key> <Value>value</Value> </Tag> </Filter> transition/expiration actions. ... </Rule> </LifecycleConfiguration>

    여러 개의 태그를 기반으로 필터를 지정할 수 있습니다. 태그는 다음 예제에서 보듯 <AND> 요소로 감싸야 합니다. 규칙은 2개의 태그(특정 태그 키와 값)를 가진 객체에서 수명 주기 작업을 수행하도록 Amazon S3에 지시합니다.

    <LifecycleConfiguration> <Rule> <Filter> <And> <Tag> <Key>key1</Key> <Value>value1</Value> </Tag> <Tag> <Key>key2</Key> <Value>value2</Value> </Tag> ... </And> </Filter> transition/expiration actions. </Rule> </Lifecycle>

    수명 주기 규칙은 태그 2개가 모두 지정된 객체에 적용됩니다. Amazon S3은 논리적 AND를 수행합니다. 다음을 참조하세요.

    • 각 태그는 키 및 값과 정확히 일치해야 합니다.

    • 이 규칙은 규칙에 모든 태그가 지정되는 객체의 하위 집합에 적용됩니다. 객체에 추가 태그가 지정되어 있더라도 규칙은 계속 적용됩니다.

    참고

    필터에서 복수의 태그를 지정할 경우, 각각의 태그 키가 고유해야 합니다.

  • 접두사와 하나 이상의 태그에 기반한 필터 지정 - 수명 주기 규칙에서 키 접두사 및 하나 이상의 태그에 기반하여 필터를 지정할 수 있습니다. 이 경우에도 아래와 같이 이 모두를 <AND> 요소로 래핑해야 합니다.

    <LifecycleConfiguration> <Rule> <Filter> <And> <Prefix>key-prefix</Prefix> <Tag> <Key>key1</Key> <Value>value1</Value> </Tag> <Tag> <Key>key2</Key> <Value>value2</Value> </Tag> ... </And> </Filter> <Status>Enabled</Status> transition/expiration actions. </Rule> </LifecycleConfiguration>

    Amazon S3은 논리적 AND를 사용하여 이 필터들을 조합합니다. 즉, 규칙은 특정 키 접두사와 특정 태그를 가진 객체의 하위 집합에 적용됩니다. 필터는 단 1개의 접두사와 0개 이상의 태그를 가질 수 있습니다.

  • 빈 필터를 지정할 수도 있는데, 이 경우에 규칙은 버킷 내 모든 객체에 적용됩니다.

    <LifecycleConfiguration> <Rule> <Filter> </Filter> <Status>Enabled</Status> transition/expiration actions. </Rule> </LifecycleConfiguration>

수명 주기 작업을 설명할 요소

S3 수명 주기 규칙에 사전 정의된 다음 작업 중 하나 이상을 지정하여 객체의 수명 주기에 따라 Amazon S3이 특정 작업을 수행하도록 지시할 수 있습니다. 이러한 작업의 효과는 버킷의 버전 관리 상태에 따라 달라집니다.

  • Transition 작업 요소 – 한 스토리지 클래스에서 다른 스토리지 클래스로 객체를 전환하려면 Transition 작업을 지정합니다. 객체 전환에 대한 자세한 내용은 지원되는 전환 작업 및 관련 제한 사항 섹션을 참조하세요. 객체의 수명 주기에서 지정된 날짜 또는 기간이 도래하면 Amazon S3이 전환을 수행합니다.

    버전이 지정된 버킷(버전 관리를 사용하거나 버전 관리가 일시 중지된 버킷)의 경우 Transition 작업은 현재 객체 버전에 적용됩니다. 최신이 아닌 버전을 관리하기 위해 Amazon S3에서는 NoncurrentVersionTransition 작업을 정의합니다(아래 설명 참조).

  • Expiration 작업 요소 - Expiration 작업은 규칙에 지정된 객체를 만료시키고 Amazon S3 스토리지 클래스의 적격 객체에 적용됩니다. 스토리지 클래스에 대한 자세한 정보는 Amazon S3 스토리지 클래스 사용를 참조하세요. Amazon S3에 의해 만료된 모든 객체는 사용할 수 없게 되고, 버킷의 버전 관리 상태에 따라 객체의 영구 삭제 여부가 결정됩니다.

    중요

    객체 만료 수명 주기 정책은 불완전 멀티파트 업로드를 제거하지 않습니다. 불완전 멀티파트 업로드업로드를 제거하려면 이 섹션 뒷부분에서 설명하는 AbortIncompleteMultipartUpload 수명 주기 구성 작업을 사용해야 합니다.

    • 버전이 지정되지 않은 버킷 - Expiration 작업을 수행하면 Amazon S3이 객체를 영구적으로 제거합니다.

    • 버전이 지정된 버킷 - 버전이 지정된 버킷(즉, 버전 관리를 사용하거나 버전 관리가 일시 중지된 버킷)의 경우, Amazon S3이 expiration 작업을 처리하는 방식에 대한 몇 가지 고려 사항이 있습니다. 자세한 내용은 S3 버킷에서 버전 관리 사용 섹션을 참조하세요. 버전 관리 상태에 상관없이 다음 사항이 적용됩니다.

      • Expiration 작업은 최신 버전에만 적용됩니다(비 최신 버전에는 영향이 없음).

      • 객체 버전이 1개 이상이고 삭제 마커가 최신 버전이면 Amazon S3은 작업을 수행하지 않습니다.

      • 최신 객체 버전이 유일한 객체 버전이면서 삭제 마커인 경우(만료된 객체 삭제 마커라고도 하는데, 이 경우 모든 객체 버전이 삭제되고 하나의 삭제 마커만 남게 됨), Amazon S3은 만료된 객체 삭제 마커를 제거합니다. 만료 행위를 사용하여 Amazon S3에게 만료된 객체 삭제 마커를 제거하도록 지시할 수도 있습니다. 관련 예제는 예제 7: 만료된 객체 삭제 마커의 제거 섹션을 참조하세요

      Amazon S3을 설정하여 만료를 관리할 때는 다음 사항도 고려하세요.

      • 버전 관리를 사용하는 버킷

        최신 객체 버전이 삭제 마커가 아닌 경우 Amazon S3은 고유한 버전 ID를 갖는 삭제 마커를 추가합니다. 이를 통해 최신 버전이 최신이 아닌 버전이 되고 삭제 마커가 최신 버전이 됩니다.

      • 버전 관리가 일시 중지된 버킷

        버전 관리가 일시 중지된 버킷에서는 만료 작업으로 인해 Amazon S3이 버전 ID가 null인 삭제 마커를 생성합니다. 삭제 마커는 버전 계층 구조에서 null 버전 ID로 모든 객체 버전을 대체함으로써 결과적으로 객체를 삭제합니다.

또한 Amazon S3에서는 버전이 지정된 버킷(즉, 버전 관리를 사용하거나 버전 관리가 일시 중지된 버킷)에서 최신이 아닌 객체 버전을 관리하는 데 사용할 수 있는 다음 작업을 제공합니다.

  • NoncurrentVersionTransition 작업 요소 - 이 작업을 사용하면 Amazon S3에서 객체를 지정된 스토리지 클래스로 전환하기 전 현재 스토리지 클래스에 유지할 기간(최신이 아닌 객체 버전이 된 시간부터)을 지정할 수 있습니다. 객체 전환에 대한 자세한 내용은 지원되는 전환 작업 및 관련 제한 사항 섹션을 참조하세요.

  • NoncurrentVersionExpiration 작업 요소 – 이 작업을 사용하면 Amazon S3이 객체를 영구 삭제하기 전 최신이 아닌 객체 버전을 유지할 기간(최신이 아닌 객체 버전이 된 시간부터)을 지정할 수 있습니다. 영구 삭제된 객체는 다시 복구할 수 없습니다.

    최신 버전이 아닌 객체를 이렇게 지연 제거하면 실수로 인한 삭제 또는 덮어쓰기로부터 복구해야 하는 경우에 유용합니다. 예를 들어, 비 최신 버전이 되고 5일 이후에 비 최신 버전을 삭제하도록 만료 규칙을 구성할 수 있습니다. 예를 들어, 2014년 1월 1일 오전 10시 30분(UTC)에 photo.gif(버전 ID 111111)라고 하는 객체를 생성한 경우, 2014년 1월 2일 오전 11시 30분에 실수로 photo.gif(버전 ID 111111)를 삭제하면 새 버전 ID(예: 버전 ID 4857693)와 함께 삭제 마커가 생성됩니다. 이제 5일 동안 원래 버전의 photo.gif(버전 ID 111111)를 복구할 수 있으며, 5일이 지나면 영구 삭제됩니다. 비 최신 버전이 된 지 5일 후인 2014년 1월 8일 0시에 만료 수명 주기 규칙이 실행되어 photo.gif(버전 ID 111111)를 영구 삭제합니다.

    중요

    객체 만료 수명 주기 정책은 불완전 멀티파트 업로드를 제거하지 않습니다. 불완전 멀티파트 업로드업로드를 제거하려면 이 섹션 뒷부분에서 설명하는 AbortIncompleteMultipartUpload 수명 주기 구성 작업을 사용해야 합니다.

전환 및 만료 작업뿐만 아니라 다음과 같은 수명 주기 구성 작업을 사용함으로써 미완료 멀티파트 업로드를 중지하도록 Amazon S3에 지시할 수 있습니다.

  • AbortIncompleteMultipartUpload 작업 요소 - 이 요소를 사용해 멀티파트 업로드가 진행 상태에 있길 원하는 최대 시간(일수)을 설정합니다. 해당 멀티파트 업로드(수명 주기 규칙에서 지정된 키 이름 prefix에 의해 결정)가 사전 지정된 기간 내에 성공적으로 완료되지 않으면, Amazon S3은 불완전 멀티파트 업로드를 중지합니다. 자세한 내용은 멀티파트 업로드 중단 섹션을 참조하세요.

    참고

    객체 태그에 기반하여 필터를 지정하는 규칙에서는 이 수명 주기 작업을 지정할 수 없습니다.

  • ExpiredObjectDeleteMarker 작업 요소 – 버전 관리를 사용하는 버킷에서 최신이 아닌 버전이 없는 삭제 마커는 만료된 객체 삭제 마커라고 부릅니다. 이 수명 주기 작업을 사용하여 S3에게 만료된 객체 삭제 마커를 제거하도록 지시할 수 있습니다. 관련 예제는 예제 7: 만료된 객체 삭제 마커의 제거 섹션을 참조하세요

    참고

    객체 태그에 기반하여 필터를 지정하는 규칙에서는 이 수명 주기 작업을 지정할 수 없습니다.

Amazon S3이 최신이 아닌 객체 버전이 된 기간을 계산하는 방법

버전 관리를 사용하는 버킷에는 항상 하나의 최신 버전 객체와 함께 0 또는 비 최신 버전의 여러 객체 버전이 존재할 수 있습니다. 새로 객체를 업로드할 때마다 새로 업로드된 후임 버전이 최신 버전이 되고, 기존의 최신 버전은 비 최신 버전이 됩니다. 최신이 아닌 객체 버전이 된 기간을 계산하기 위해 Amazon S3은 후속 객체가 생성된 날짜를 확인합니다. Amazon S3은 후속 객체의 생성 일수를 사용하여 최신이 아닌 객체 버전이 된 기간을 계산합니다.

수명 주기 구성을 사용한 이전 버전의 객체 복원

이전 버전 복원 항목의 설명과 같이 다음 두 가지 방법 중 하나를 사용하여 이전 버전의 객체를 복구할 수 있습니다.

  1. 비 최신 버전의 객체를 동일한 버킷으로 복사합니다. 복사된 객체는 해당 객체의 최신 버전이 되고 모든 객체 버전은 유지됩니다.

  2. 객체의 최신 버전을 영구 삭제합니다. 최신 객체 버전을 삭제하는 것은 실제로 해당 객체의 비 최신 버전을 최신 버전으로 만드는 것과 같습니다.

버전 관리를 사용하는 버킷에 S3 수명 주기 구성 규칙을 사용할 경우 첫 번째 방법을 사용하는 것이 모범 사례입니다.

수명 주기는 최종 일관성 모델로 작동합니다. 영구적으로 삭제한 최신 버전은 변경 사항이 전파될 때까지 사라지지 않을 수 있습니다(Amazon S3가 이 삭제를 인식하지 못할 수 있음). 그 동안 비 최신 버전 객체를 만료시키도록 구성된 수명 주기 규칙에 의해 복구하려는 객체를 포함하여 비 최신 버전 객체가 영구 삭제될 수 있습니다. 따라서 첫 번째 방법에서 권장하는 대로 이전 버전을 복사하는 것이 더 안전합니다.

다음 표에 객체가 포함된 버킷의 버전 관리 상태에 따라 S3 수명 주기 구성 규칙에서 수행하는 작업의 결과가 요약되어 있습니다.

수명 주기 작업 및 버킷의 버전 관리 상태
작업 버전 관리를 사용하지 않는 버킷(버전 관리를 활성화하지 않은 경우) 버전 관리를 사용하는 버킷 버전 관리가 일시 중지된 버킷

Transition

객체의 수명 주기에서 지정된 날짜 또는 기간에 도달하면.

Amazon S3이 객체를 지정된 스토리지 클래스로 전환합니다. Amazon S3이 최신 버전의 객체를 지정된 스토리지 클래스로 전환합니다. 버전 관리를 사용하는 버킷과 동일하게 작동합니다.

Expiration

객체의 수명 주기에서 지정된 날짜 또는 기간에 도달하면.

만료는 객체를 삭제하며, 이렇게 삭제된 객체는 다시 복구할 수 없습니다. 최신 버전이 삭제 마커가 아닐 경우 Amazon S3은 삭제 마커를 생성하여 최신 버전으로 만들고 기존 최신 버전은 최신이 아닌 버전으로 유지합니다. 수명 주기에서 null 버전 ID로 삭제 마커를 생성하여 최신 버전으로 만듭니다. 최신 버전의 객체 버전 ID가 null일 경우 만료 작업은 이 버전을 영구 삭제하고, 그렇지 않으면 최신 버전을 비 최신 버전으로 유지합니다.

NoncurrentVersionTransition

객체가 지정된 기간(일) 동안 최신이 아닌 객체로 분류된 경우입니다.

NoncurrentVersionTransition은 아무 영향이 없습니다.

Amazon S3이 최신이 아닌 객체 버전을 지정된 스토리지 클래스로 전환합니다.

버전 관리를 사용하는 버킷과 동일하게 작동합니다.

NoncurrentVersionExpiration

객체가 지정된 기간(일) 동안 최신이 아닌 객체로 분류된 경우입니다.

NoncurrentVersionExpiration은 아무 영향이 없습니다. NoncurrentVersionExpiration 작업은 비 최신 버전의 객체를 삭제하며, 이렇게 삭제된 객체는 다시 복구할 수 없습니다. 버전 관리를 사용하는 버킷과 동일하게 작동합니다.

수명 주기 규칙: 객체 기간 기반

객체 생성 또는 수정을 기준으로 Amazon S3에서 작업을 수행할 수 있는 기간을 지정할 수 있습니다.

S3 수명 주기 구성에서 TransitionExpiration 작업 일수를 지정할 경우, 다음에 유의하세요.

  • 작업이 이루어질 객체 생성 이후의 일수입니다.

  • Amazon S3은 객체 생성 시간을 기준으로 규칙에 지정된 일수를 계산하며, 익일 자정(UTC)으로 계산된 시간을 상향 조정합니다. 예를 들어, 객체가 2014년 1월 15일 오전 10시 30분에 생성되고, 이전 규칙에 3일을 지정한 경우 객체의 이전일은 2014년 1월 19일 0시가 됩니다.

참고

Amazon S3은 각 객체에 대해 최종 수정일만 유지합니다. Amazon S3 콘솔은 객체의 속성(Properties) 창에 마지막 수정 날짜를 표시합니다. 새 객체를 처음 생성할 때 이 날짜는 객체가 생성된 날짜가 되고, 객체를 변경하면 날짜도 이에 따라 바뀝니다. 따라서 생성일최종 수정일과 같은 날짜가 됩니다.

수명 주기 구성에서 NoncurrentVersionTransitionNoncurrentVersionExpiration 작업의 일 수를 지정할 경우 다음에 유의하세요.

  • Amazon S3에서 지정된 객체에 대해 작업을 수행할 기간으로 객체 버전이 최신이 아닌 버전이 된 이후의 일수(즉, 객체를 덮어쓰거나 삭제한 후 경과한 일수)를 지정합니다.

  • Amazon S3은 후속 버전의 새 객체가 생성된 시간을 기준으로 규칙에 지정된 일수를 계산하며, 익일 자정(UTC)으로 계산된 시간을 상향 조정합니다. 예를 들어 버킷에서 2014년 1월 1일 오전 10:30 UTC에 생성된 객체가 현재 버전이라고 가정합시다. 현재 버전을 대체한 새 버전이 2014년 1월 15일 오전 10:30 UTC에 생성되었고 전환 규칙에 3일을 지정했다면, 해당 객체의 전환 날짜는 2014년 1월 19일 00:00 UTC로 계산됩니다.

수명 주기 규칙: 지정된 날짜 기반

S3 수명 주기 규칙에서 작업을 지정할 때 Amazon S3에서 작업을 수행하기를 원하는 날짜를 지정할 수 있습니다. 특정 데이터가 도착하면 Amazon S3이 필터 기준에 부합하는 모든 객체에 작업을 적용합니다.

과거 날짜를 사용하여 S3 수명 주기 작업을 지정할 경우 모든 기준 부합 객체가 해당 수명 주기 작업에 대해 즉시 적격 상태가 됩니다.

중요

날짜 기반 작업은 일회용 작업이 아닙니다. Amazon S3은 날짜가 경과한 이후에도 해당 규칙 상태가 Enabled로 유지되는 한 데이터 기반 작업을 계속 적용합니다.

예를 들어, 날짜 기반 Expiration 작업을 지정하여 모든 객체를 삭제한다고 가정해 봅시다(규칙에 지정된 필터가 없는 것으로 가정). 지정된 날짜에 Amazon S3은 버킷 내 모든 객체를 만료시킵니다. 또한 S3는 사용자가 버킷에서 만드는 새 객체도 모두 만료시킵니다. 수명 주기 작업을 중지하려면 작업을 수명 주기 구성에서 제거하거나, 규칙을 해제하거나, 규칙을 수명 주기 구성에서 삭제해야 합니다.

날짜 값은 ISO 8601 형식을 준수해야 합니다. 시간은 항상 자정(UTC)입니다.

참고

Amazon S3 콘솔을 사용하여 날짜 기반 수명 주기 규칙을 만들 수는 없지만 그러한 규칙을 조회, 비활성화 또는 삭제할 수는 있습니다.