메뉴
Amazon Simple Storage Service
개발자 안내서 (API Version 2006-03-01)

수명 주기 구성의 예제

이 단원에서는 수명 주기 구성의 예를 제공합니다. 각 예제에서는 예제 시나리오별로 XML을 지정하는 방법을 보여줍니다.

예 1: 필터 지정

각 수명 주기 규칙에는 수명 주기 규칙이 적용되는 버킷 내 객체의 하위 집합을 식별하는 데 사용할 수 있는 필터가 포함되어 있습니다. 다음 수명 주기 구성은 필터를 지정하는 방법에 대한 예시입니다.

  • 이 수명 주기 구성 규칙에서 필터는 키 접두사를 지정합니다(tax/). 따라서 이 규칙은 tax/doc1.txttax/doc2.txt과 같은 키 이름 접두사 tax/가 있는 객체에 적용됩니다.

    이 규칙은 Amazon S3에게 다음을 수행하도록 요청하는 두 가지 작업을 지정합니다.

    • 생성 후 365일(1년)이 지난 객체를 GLACIER 스토리지 클래스로 전환합니다.

    • 생성 후 3,650일(10년)이 지난 객체(Expiration 작업)를 삭제합니다.

    Copy
    <LifecycleConfiguration> <Rule> <ID>Transition and Expiration Rule</ID> <Filter> <Prefix>tax/</Prefix> </Filter> <Status>Enabled</Status> <Transition> <Days>365</Days> <StorageClass>GLACIER</StorageClass> </Transition> <Expiration> <Days>3650</Days> </Expiration> </Rule> </LifecycleConfiguration>

    생성 후 객체 기간을 일수로 지정하는 대신 각 작업에 날짜를 지정할 수 있습니다. 하지만 동일한 규칙에서 DateDays를 모두 사용할 수는 없습니다.

  • 수명 주기 규칙이 모든 객체에 적용되도록 하려면 빈 접두사를 지정해야 합니다. 다음 구성에서 이 규칙은 생성 후 0일이 지난 객체를 GLACIER 스토리지 클래스로 이전하도록 Amazon S3에 요청하는 Transition 작업을 지정합니다. 이 경우 객체는 생성 후 당일 자정(UTC)이 되면 Amazon Glacier에 보관될 수 있습니다.

    Copy
    <LifecycleConfiguration> <Rule> <ID>Archive all object same-day upon creation</ID> <Filter> <Prefix></Prefix> </Filter> <Status>Enabled</Status> <Transition> <Days>0</Days> <StorageClass>GLACIER</StorageClass> </Transition> </Rule> </LifecycleConfiguration>
  • 0개 이상의 키 이름 접두사, 0개 이상의 객체 태그를 필터에 지정할 수 있습니다. 다음 예시 코드에서는 키 접두사 tax/가 있는 객체의 하위 집합과 특정 키 및 값을 지닌 태그 두 개가 있는 객체에 수명 주기 규칙을 적용합니다. 하나 이상의 필터를 지정하는 경우, 예시에서와 같이 AND를 포함해야 한다는 점에 유의하십시오(Amazon S3는 논리적 AND를 적용하여 지정된 필터 조건을 결합함).

    Copy
    ... <Filter> <And> <Prefix>tax/</Prefix> <Tag> <Key>key1</Key> <Value>value1</Value> </Tag> <Tag> <Key>key2</Key> <Value>value2</Value> </Tag> </And> </Filter> ...
  • 태그에만 기반을 두어 객체를 필터링할 수 있습니다. 예를 들어, 아래의 수명 주기 규칙은 지정된 태그가 두 개인 객체에 적용됩니다(접두사는 지정하지 않음).

    Copy
    ... <Filter> <And> <Tag> <Key>key1</Key> <Value>value1</Value> </Tag> <Tag> <Key>key2</Key> <Value>value2</Value> </Tag> </And> </Filter> ...

중요

수명 주기 구성에 규칙이 여러 개인 경우, 객체는 여러 가지 수명 주기 작업을 수행할 수 있습니다. 그러한 경우, Amazon S3가 따르는 일반적인 규칙은 다음과 같습니다.

  • 영구 삭제는 전환에 우선합니다.

  • 전환은 삭제 마커 생성에 우선합니다.

  • 객체에서 GLACIER 및 STANDARD_IA 전환을 모두 사용할 수 있는 경우, Amazon S3는 GLACIER 전환을 선택합니다.

예제는 예 5: 중복 필터, 서로 충돌하는 수명 주기 작업 및 Amazon S3가 수행하는 작업 단원을 참조하십시오.

예 2: 수명 주기 규칙 비활성화

수명 주기 규칙을 일시적으로 비활성화할 수 있습니다. 다음 수명 주기 구성에서는 두 가지 규칙을 지정합니다.

  • 규칙 1은 Amazon S3에게 객체 생성 직후 logs/ 접두사가 있는 객체를 GLACIER 스토리지 클래스로 이전하도록 지시합니다.

  • 규칙 2는 Amazon S3에게 객체 생성 직후 documents/ 접두사가 있는 객체를 GLACIER 스토리지 클래스로 이전하도록 지시합니다.

정책에서 규칙 1은 활성화되고 규칙 2는 비활성화됩니다. Amazon S3은 비활성화된 규칙에 대해서는 아무 작업도 수행하지 않습니다.

Copy
<LifecycleConfiguration> <Rule> <ID>Rule1</ID> <Filter> <Prefix>logs/</Prefix> </Filter> <Status>Enabled</Status> <Transition> <Days>0</Days> <StorageClass>GLACIER</StorageClass> </Transition> </Rule> <Rule> <ID>Rule2</ID> <Prefix>documents/</Prefix> <Status>Disabled</Status> <Transition> <Days>0</Days> <StorageClass>GLACIER</StorageClass> </Transition> </Rule> </LifecycleConfiguration>

예 3: 객체의 수명 주기 동안 스토리지 클래스 티어 다운

이 예시에서는 수명 주기 구성을 활용하여 수명 주기 동안 객체의 스토리지 클래스를 티어 다운합니다. 이 티어 다운을 사용하면 스토리지 비용을 줄일 수 있습니다. 요금에 대한 자세한 내용은 Amazon S3 요금을 참조하십시오.

다음 수명 주기 구성에서는 키 이름 접두사가 logs/인 객체에 적용되는 규칙을 지정합니다. 이 규칙은 다음 작업을 지정합니다.

  • 두 전환 작업:

    • 생성 후 30일이 지난 객체를 STANDARD_IA 스토리지 클래스로 전환합니다.

    • 생성 후 90일이 지난 객체를 GLACIER 스토리지 클래스로 전환합니다.

  • 생성 후 1년이 지난 객체를 삭제하도록 Amazon S3에 지시하는 만료 작업 1개.

Copy
<LifecycleConfiguration> <Rule> <ID>example-id</ID> <Filter> <Prefix>logs/</Prefix> </Filter> <Status>Enabled</Status> <Transition> <Days>30</Days> <StorageClass>STANDARD_IA</StorageClass> </Transition> <Transition> <Days>90</Days> <StorageClass>GLACIER</StorageClass> </Transition> <Expiration> <Days>365</Days> </Expiration> </Rule> </LifecycleConfiguration>

참고

모든 작업이 접두사로 식별된 동일한 객체 집합에 적용되는 경우, 하나의 규칙으로 모든 수명 주기 작업을 설명할 수 있습니다. 또는 각각 다른 필터를 지정하는 여러 규칙을 추가할 수 있습니다.

예 4: 여러 규칙 지정

객체마다 다른 수명 주기 작업을 원할 경우 여러 규칙을 지정할 수 있습니다. 다음 수명 주기 구성에는 두 가지 규칙이 있습니다.

  • 규칙 1은 키 이름 접두사가 classA/인 객체에 적용되며, Amazon S3에게 생성 후 1년이 지난 객체를 GLACIER 스토리지 클래스로 이전하고 10년이 지난 객체를 만료 처리하도록 지시합니다.

  • 규칙 2는 키 이름 접두사가 classB/인 객체에 적용되며, Amazon S3에게 생성 후 90일이 지난 객체를 STANDARD_IA 스토리지 클래스로 이전하고 1년이 지난 객체를 삭제하도록 지시합니다.

Copy
<LifecycleConfiguration> <Rule> <ID>ClassADocRule</ID> <Filter> <Prefix>classA/</Prefix> </Filter> <Status>Enabled</Status> <Transition>       <Days>365</Days>       <StorageClass>GLACIER</StorageClass>     </Transition> <Expiration> <Days>3650</Days> </Expiration> </Rule> <Rule> <ID>ClassBDocRule</ID> <Filter> <Prefix>classB/</Prefix> </Filter> <Status>Enabled</Status> <Transition>       <Days>90</Days>       <StorageClass>STANDARD_IA</StorageClass>     </Transition> <Expiration> <Days>365</Days> </Expiration> </Rule> </LifecycleConfiguration>

예 5: 중복 필터, 서로 충돌하는 수명 주기 작업 및 Amazon S3가 수행하는 작업

수명 주기 구성을 지정하여 중복 접두사 또는 작업을 지정할 수 있습니다. 다음 예시에서는 Amazon S3가 어떤 방식으로 잠재적인 충돌을 해결하는지 보여줍니다.

예 1: 중복 접두사(충돌 없음)

다음에서 예로 든 구성에는 중복 접두사를 지정하는 규칙이 두 개 있습니다.

  • 첫 번째 규칙은 버킷의 모든 객체를 의미하는 빈 필터를 지정합니다.

  • 두 번째 규칙은 버킷에서 객체의 하위 집합만을 의미하는 logs/라는 키 이름 접두사를 지정합니다.

규칙 1은 Amazon S3에게 생성 후 1년이 지난 모든 객체를 삭제하도록 요청하고, 규칙 2는 Amazon S3에게 생성 후 30일이 지나면 객체의 하위 집합을 STANDARD_IA 스토리지 클래스로 전환하도록 요청합니다.

Copy
<LifecycleConfiguration> <Rule> <ID>Rule 1</ID> <Filter> </Filter> <Status>Enabled</Status> <Expiration> <Days>365</Days> </Expiration> </Rule> <Rule> <ID>Rule 2</ID> <Filter> <Prefix>logs/</Prefix> </Filter> <Status>Enabled</Status> <Transition> <StorageClass>STANDARD_IA<StorageClass> <Days>30</Days> </Transition> </Rule> </LifecycleConfiguration>

예 2: 서로 충돌하는 수명 주기 작업

이 구성 예시에는 객체 수명 주기 중 같은 시각에 동일한 객체 집합에 대해 두 가지 작업을 수행하도록 Amazon S3에게 지시하는 규칙이 두 개 있습니다.

  • 두 규칙은 동일한 키 이름 접두사를 지정하므로, 두 규칙은 동일한 객체 집합에 적용됩니다.

  • 두 규칙은, 규칙이 적용될 때 생성 후 365일이 지난 동일한 객체를 지정합니다.

  • 한 규칙은 Amazon S3에게 객체를 STANDARD_IA 스토리지 클래스로 이전하도록 지시하고, 이와 동시에 다른 규칙은 Amazon S3에게 객체를 만료 처리하도록 지시합니다.

Copy
<LifecycleConfiguration> <Rule> <ID>Rule 1</ID> <Filter> <Prefix>logs/</Prefix> </Filter> <Status>Enabled</Status> <Expiration> <Days>365</Days> </Expiration> </Rule> <Rule> <ID>Rule 2</ID> <Filter> <Prefix>logs/</Prefix> </Filter> <Status>Enabled</Status> <Transition> <StorageClass>STANDARD_IA<StorageClass> <Days>365</Days> </Transition> </Rule> </LifecycleConfiguration>

이 경우, 객체가 만료(제거)되기를 원하는 것이므로 스토리지 클래스를 변경하는 것은 의미가 없습니다. 따라서 Amazon S3는 이 객체들에 대해 만료 작업만 선택합니다.

예 3: 중복 접두사로 인해 서로 충돌하는 수명 주기 작업

이 예시의 구성에는 다음과 같이 중복 접두사를 지정하는 규칙이 두 개 있습니다.

  • 규칙 1은 빈 접두사(모든 객체를 의미)를 지정합니다.

  • 규칙 2는 모든 객체의 하위 집합을 식별하는 키 이름 접두사(logs/)를 지정합니다.

키 이름 접두사가 logs/인 객체의 하위 집합에는 두 규칙의 수명 주기 작업이 적용됩니다. 한 규칙은 Amazon S3에게 생성 후 10년이 지난 객체를 이전하도록 지시하고, 다른 규칙은 Amazon S3에게 생성 후 365일이 지난 객체를 이전하도록 지시합니다.

Copy
<LifecycleConfiguration> <Rule> <ID>Rule 1</ID> <Filter> <Prefix></Prefix> </Filter> <Status>Enabled</Status> <Transition> <StorageClass>STANDARD_IA<StorageClass> <Days>10</Days> </Transition> </Rule> <Rule> <ID>Rule 2</ID> <Filter> <Prefix>logs/</Prefix> </Filter> <Status>Enabled</Status> <Transition> <StorageClass>STANDARD_IA<StorageClass> <Days>365</Days> </Transition> </Rule> </LifecycleConfiguration>

이 경우, Amazon S3는 생성 후 10일 지난 객체를 이전하는 쪽을 선택합니다.

예 4: 태그 기반 필터링과 그로 인해 서로 충돌하는 수명 주기 작업

다음과 같이 각각 태그 필터를 지정하는 두 가지 규칙이 있는 수명 주기 정책을 가정해봅시다.

  • 규칙 1은 태그 기반 필터(tag1/value1)를 지정합니다. 이 규칙은 Amazon S3에게 생성 후 365일이 지난 객체를 GLACIER 스토리지 클래스로 전환하도록 지시합니다.

  • 규칙 2는 태그 기반 필터(tag2/value2)를 지정합니다. 이 규칙은 Amazon S3에게 생성 후 14일이 지난 객체를 만료 처리하도록 지시합니다.

수명 주기 구성은 다음과 같습니다.

Copy
<LifecycleConfiguration> <Rule> <ID>Rule 1</ID> <Filter> <Tag> <Key>tag1</Key> <Value>value1</Value> </Tag> </Filter> <Status>Enabled</Status> <Transition> <StorageClass>GLACIER<StorageClass> <Days>365</Days> </Transition> </Rule> <Rule> <ID>Rule 2</ID> <Filter> <Tag> <Key>tag2</Key> <Value>value1</Value> </Tag> </Filter> <Status>Enabled</Status> <Expiration> <Days>14</Days> </Expiration> </Rule> </LifecycleConfiguration>

정책은 좋습니다. 그러나 두 태그가 모두 있는 객체가 있는 경우, S3는 어떤 작업을 할지 결정해야 합니다. 즉 두 규칙 모두 한 객체에 적용되므로, 결과적으로 Amazon S3에게 서로 충돌하는 작업을 수행하도록 지시하는 셈이 됩니다. 이 경우, Amazon S3는 생성 후 14일 지난 객체를 만료 처리합니다. 그 객체가 제거되면, 이에 따라 전환 작업은 실행되지 않습니다.

예 6: 버전 관리를 사용하는 버킷에 대한 수명 주기 규칙 지정

버전 관리를 사용하는 버킷이 있으면 각 객체에 대해 최신 버전 1개와 0개 또는 여러 개의 이전 버전이 존재합니다. 기록을 1년 동안 유지한 후 최신이 아닌 버전을 삭제하고자 합니다. 버전 관리에 대한 자세한 내용은 객체 버전 관리 단원을 참조하십시오.

또한 최신이 아닌 버전(실시간 액세스가 필요 없는 콜드 데이터로 간주)이 된 후 30일이 지나면 최신이 아닌 버전을 GLACIER로 이동하여 스토리지 비용을 절약하려고 합니다. 뿐만 아니라 생성 후 90일이 지나면 최신 버전에 대한 액세스 빈도가 감소할 것을 예상하여 해당 객체를 STANDARD_IA 스토리지 클래스로 이동하는 쪽을 선택할 수 있습니다.

Copy
<LifecycleConfiguration> <Rule> <ID>sample-rule</ID> <Filter> <Prefix></Prefix> </Filter> <Status>Enabled</Status> <Transition> <Days>90</Days> <StorageClass>STANDARD_IA</StorageClass> </Transition> <NoncurrentVersionTransition> <NoncurrentDays>30</NoncurrentDays> <StorageClass>GLACIER</StorageClass> </NoncurrentVersionTransition> <NoncurrentVersionExpiration> <NoncurrentDays>365</NoncurrentDays> </NoncurrentVersionExpiration> </Rule> </LifecycleConfiguration>

예제 7: 만료된 객체 삭제 마커의 제거

버전 관리를 사용하는 버킷에는 최신 버전의 객체 1개와 각 객체에 대한 1개 이상의 비 최신 버전이 존재합니다. 객체를 삭제할 때는 다음 사항에 유의하십시오.

  • 삭제 요청에서 버전 ID를 지정하지 않는 경우, Amazon S3에서는 그 객체를 삭제하는 대신 삭제 마커를 추가합니다. 최신 객체 버전이 최신이 아닌 버전이 된 후에는 삭제 마커가 최신 버전이 됩니다.

  • 삭제 요청에서 버전 ID를 지정하는 경우, Amazon S3에서는 그 객체 버전을 영구적으로 삭제합니다(삭제 마커는 생성되지 않습니다).

  • 비 최신 버전이 없는 삭제 마커는 만료된 객체 삭제 마커라고 부릅니다.

이 예시에서는 버킷에 만료된 객체 삭제 마커를 생성할 수 있는 시나리오, 그리고 수명 주기 구성을 사용해 Amazon S3에게 만료된 객체 삭제 마커를 제거하도록 지시하는 방법을 보여줍니다.

NoncurrentVersionExpiration 작업이 아래와 같이 최신이 아닌 버전이 된 지 30일이 되는 시점에 최신이 아닌 버전을 제거하도록 하는 수명 주기 정책을 작성한다고 가정합시다.

Copy
<LifecycleConfiguration> <Rule> ... <NoncurrentVersionExpiration> <NoncurrentDays>30</NoncurrentDays> </NoncurrentVersionExpiration> </Rule> </LifecycleConfiguration>

NoncurrentVersionExpiration 작업은 최신 버전의 객체에는 적용되지 않고 최신 버전이 아닌 객체만을 제거한다는 점에 유의하십시오.

최신 버전의 객체에 대해서는 최신 객체 버전이 잘 정의된 수명 주기를 따르는지 여부에 따라 수명 주기를 관리할 수 있는 옵션이 다음과 같이 마련되어 있습니다.

  • 객체의 최신 버전은 잘 정의된 수명 주기를 따릅니다.

    이 경우 Expiration 작업을 갖춘 수명 주기 정책을 사용하여 Amazon S3에게 다음 예제와 같이 최신 버전을 제거하도록 지시할 수 있습니다.

    Copy
    <LifecycleConfiguration> <Rule> ... <Expiration> <Days>60</Days> </Expiration> <NoncurrentVersionExpiration> <NoncurrentDays>30</NoncurrentDays> </NoncurrentVersionExpiration> </Rule> </LifecycleConfiguration>

    Amazon S3는 최신 버전의 객체 각각에 삭제 마커를 추가함으로써 생성된 지 60일이 지난 최신 버전을 제거합니다. 이를 통해 최신 버전이 최신이 아닌 버전이 되고 삭제 마커가 최신 버전이 됩니다. 자세한 내용은 버전 관리 사용 단원을 참조하십시오.

    동일한 수명 주기 구성의 NoncurrentVersionExpiration 작업은 비 최신 버전이 된 지 30일이 지난 객체들을 제거합니다. 따라서 모든 버전의 객체들은 제거되고 객체 삭제 마커는 만료되었지만, Amazon S3는 만료된 객체 삭제 마커를 탐지하여 제거해줍니다.

  • 객체의 최신 버전은 잘 정의된 수명 주기를 따르지 않습니다.

    이 경우 그 객체들이 필요 없는 경우 1개 이상의 비 최신 버전에 삭제 마커를 생성하여 수동으로 제거할 수 있습니다. NoncurrentVersionExpiration 작업을 갖춘 수명 주기 구성이 최신이 아닌 버전을 모두 제거하면, 만료된 객체 삭제 마커를 갖게 됩니다.

    특히 이러한 시나리오의 경우에는 Amazon S3 수명 주기 구성이 다음과 같이 Expiration 작업을 제공하여 Amazon S3에게 만료된 객체 삭제 마커를 제거하도록 요청합니다.

    Copy
    <LifecycleConfiguration> <Rule> <ID>Rule 1</ID> <Filter> <Prefix>logs/</Prefix> </Filter> <Status>Enabled</Status> <Expiration> <ExpiredObjectDeleteMarker>true</ExpiredObjectDeleteMarker> </Expiration> <NoncurrentVersionExpiration> <NoncurrentDays>30</NoncurrentDays> </NoncurrentVersionExpiration> </Rule> </LifecycleConfiguration>

Expiration 작업에서 ExpiredObjectDeleteMarker 요소를 true로 설정함으로써 Amazon S3에게 만료된 객체 삭제 마커를 제거하도록 지시합니다. 객체가 만료된 후 48시간이 지나자마자 Amazon S3는 만료된 객체 삭제 마커를 제거합니다.

참고

ExpiredObjectDeleteMarker 수명 주기 작업을 지정할 때, 이 규칙은 태그 기반 필터를 지정할 수 없습니다.

예 8: 멀티파트 업로드 중단을 위한 수명 주기 구성

멀티파트 업로드 API를 사용하면 대형 객체를 여러 부분으로 나누어 업로드할 수 있습니다. 멀티파트 업로드에 대한 자세한 내용은 멀티파트 업로드 개요 단원을 참조하십시오. 멀티파트 업로드가 시작된 후 지정 일수 내에 완료되지 않은 경우, 수명 주기 구성을 사용하여 미완료 멀티파트 업로드(규칙에 지정된 키 이름 접두사로 식별)를 중단하도록 Amazon S3에게 지시할 수 있습니다. Amazon S3는 멀티파트 업로드를 중단할 때 멀티파트 업로드와 관련된 모든 부분을 삭제합니다. 이를 통해 미완료된 멀티파트 업로드는 물론 Amazon S3에 저장된 부분들이 없도록 보장하므로, 이 부분들에 대해 스토리지 비용을 지불할 필요가 없습니다. 다음은 AbortIncompleteMultipartUpload 작업으로 규칙을 지정하는 수명 주기 구성의 예시입니다. 이 작업은 시작 후 7일이 지나면 미완료된 멀티파트 업로드 중단하도록 Amazon S3에 요청합니다.

Copy
<LifecycleConfiguration> <Rule> <ID>sample-rule</ID> <Filter> <Prefix>SomeKeyPrefix/</Prefix> </Filter> <Status>rule-status</Status> <AbortIncompleteMultipartUpload> <DaysAfterInitiation>7</DaysAfterInitiation> </AbortIncompleteMultipartUpload> </Rule> </LifecycleConfiguration>

참고

AbortIncompleteMultipartUpload 수명 주기 작업을 지정할 때, 해당 규칙은 태그 기반 필터를 지정할 수 없습니다.