

# 객체 수명 주기 관리
<a name="object-lifecycle-mgmt"></a>

S3 수명 주기를 사용하면 객체를 더 저렴한 스토리지 클래스로 이전하거나 자동으로 만료된 객체를 삭제하여 수명 주기 전반에 걸쳐 객체를 비용 효율적으로 저장할 수 있습니다. 객체의 수명 주기를 관리하려면 버킷에 대한 *S3 수명 주기 구성*을 만듭니다. S3 수명 주기 구성은 Amazon S3이 객체 그룹에 적용하는 작업을 정의하는 일련의 규칙입니다. 다음과 같은 두 가지 유형의 작업이 있습니다.
+ **전환 작업** - 이 작업은 객체가 다른 스토리지 클래스로 전환되는 시기를 정의합니다. 예를 들어, 생성 후 30일이 지나면 객체를 S3 STANDARD-IA 스토리지 클래스로 전환하거나 생성 후 1년이 지나면 객체를 S3 Glacier Flexible Retrieval 스토리지 클래스에 아카이브하도록 선택할 수 있습니다. 자세한 내용은 [Amazon S3 스토리지 클래스 이해 및 관리](storage-class-intro.md) 섹션을 참조하세요.

  수명 주기 전환 요청과 관련된 비용이 있습니다. 요금 정보는 [Amazon S3 요금](https://aws.amazon.com/s3/pricing/)을 참조하세요.
+ **만료 작업** - 이 작업은 객체가 만료되는 시기를 정의합니다. Amazon S3에서 만료된 객체를 자동으로 삭제합니다. 예를 들어, 규제 준수 기간 동안 객체를 저장한 후 객체를 만료하도록 선택할 수 있습니다. 자세한 내용은 [객체 만료](lifecycle-expire-general-considerations.md) 섹션을 참조하세요.

  수명 주기 만료와 관련된 잠재적 비용은 스토리지 클래스의 객체를 최소 저장 기간으로 만료시키는 경우에만 발생합니다. 자세한 내용은 [최소 스토리지 기간 요금](lifecycle-expire-general-considerations.md#lifecycle-expire-minimum-storage) 섹션을 참조하세요.

**중요**  
**범용 버킷** - 버킷 정책을 사용하여 S3 수명 주기 규칙에 따른 삭제 또는 전환을 방지할 수는 없습니다. 예를 들어, 버킷 정책이 모든 보안 주체에 대한 모든 작업을 거부하더라도 S3 수명 주기 구성은 여전히 정상적으로 작동합니다.

**기존 객체 및 새 객체**  
버킷에 수명 주기 구성을 추가할 경우 구성 규칙이 기존 객체는 물론 나중에 추가하는 객체에도 적용됩니다. 예를 들어, 객체를 생성한 후 30일이 경과하면 만료시키는 만료 작업을 포함하는 수명 주기 구성 규칙을 오늘 추가할 경우, Amazon S3는 30일 이상 경과한 모든 기존 객체를 삭제 대기열에 넣습니다.

**결제 변경 사항**  
객체가 수명 주기 작업에 적합하게 되는 시점과 Amazon S3에서 객체를 이전하거나 만료하는 시점 사이에 지연이 있는 경우 객체가 수명 주기 작업에 적합한 상태가 되는 즉시 결제 변경 사항이 적용됩니다. 예를 들어 객체가 만료되도록 예약되어 있고 Amazon S3가 객체를 즉시 만료하지 않는 경우 만료 시간 이후에는 스토리지 요금이 부과되지 않습니다.

이 동작에 대한 한 가지 예외는 S3 Intelligent-Tiering 스토리지 클래스로 전환하는 수명 주기 규칙이 있는 경우입니다. 이 경우 객체가 S3 Intelligent-Tiering으로 전환될 때까지 결제 변경이 발생하지 않습니다. S3 수명 주기 규칙에 대한 자세한 내용은 [수명 주기 구성의 요소](intro-lifecycle-rules.md) 섹션을 참조하세요.

**참고**  
수명 주기 전환에는 데이터 검색 요금이 부과되지 않습니다. 하지만 `PUT`, `COPY` 또는 수명 주기 규칙을 사용하여 데이터를 S3 스토리지 클래스로 이동할 경우 요청당 수집 요금이 부과됩니다. 객체를 스토리지 클래스로 이동하기 전에 수집 또는 전환 비용을 고려하세요. 비용 고려 사항에 대한 자세한 내용은 [Amazon S3 요금](https://aws.amazon.com/s3/pricing/)을 참조하세요.

**수명 주기 규칙의 영향 모니터링**  
활성 수명 주기 규칙에 의한 업데이트의 영향을 모니터링하려면 [수명 주기 규칙에 따라 취해진 조치를 모니터링하려면 어떻게 해야 하나요?](troubleshoot-lifecycle.md#troubleshoot-lifecycle-2) 섹션을 참조하세요.

## 객체의 전체 수명 주기 관리
<a name="lifecycle-config-overview-what"></a>

S3 수명 주기 구성 규칙을 사용하면 Amazon S3가 객체를 더 저렴한 스토리지 클래스로 전환하거나 아카이브하거나 삭제하도록 유도할 수 있습니다. 예제: 
+ 버킷에 주기적으로 로그를 업로드할 경우 애플리케이션에서는 이것을 한 주나 한 달 동안 필요로 할 수 있습니다. 그 이후에는 사용자가 이것을 삭제하고 싶을 것입니다.
+ 일부 문서는 제한된 기간 동안 자주 액세스됩니다. 그 이후에는 문서가 가끔 액세스됩니다. 어느 시점이 되면 이러한 문서에 실시간으로 액세스할 필요가 없지만 조직 또는 규정에서 특정 기간 동안 해당 문서를 보관할 것을 요구할 수도 있습니다. 그 이후에는 사용자가 문서를 삭제할 수 있습니다.
+ 어떤 유형의 데이터는 주로 아카이브의 목적으로 Amazon S3에 업로드할 수도 있습니다. 예를 들어, 디지털 미디어, 금융 및 의료 기록, 가공되지 않은 유전체 염기서열 데이터, 장기 데이터베이스 백업 파일, 규제 준수를 위해 보존해야 하는 데이터 등을 보관할 수 있습니다.

S3 수명 주기 작업을 결합하여 객체의 전체 수명 주기를 관리합니다. 예를 들어, 생성하는 객체의 수명 주기가 명확하게 정의되어 있다고 가정해봅시다. 처음 30일 동안에는 객체에 자주 액세스합니다. 그 후, 최대 90일 동안에는 객체에 가끔 액세스합니다. 그 다음에는 객체가 더 이상 필요하지 않아서 보관하거나 삭제하기로 선택할 것입니다.

이 시나리오에서는 S3 Intelligent-Tiering, S3 Standard-IA 또는 S3 One Zone-IA 스토리지로의 최초 전환 작업과 아카이브를 위한 S3 Glacier Flexible Retrieval 스토리지로의 다른 전환 작업, 그리고 만료 작업을 지정하는 S3 수명 주기 규칙을 생성할 수 있습니다. 한 스토리지 클래스에서 다른 스토리지 클래스로 객체를 이동하면 스토리지 비용이 절약됩니다. 비용 고려 사항에 대한 자세한 내용은 [Amazon S3 요금](https://aws.amazon.com/s3/pricing/)을 참조하세요.

**Topics**
+ [객체의 전체 수명 주기 관리](#lifecycle-config-overview-what)
+ [Amazon S3 수명 주기를 사용하여 객체 전환](lifecycle-transition-general-considerations.md)
+ [객체 만료](lifecycle-expire-general-considerations.md)
+ [버킷에서 S3 수명 주기 구성 설정](how-to-set-lifecycle-configuration-intro.md)
+ [S3 수명 주기가 다른 버킷 구성과 상호 작용하는 방식](lifecycle-and-other-bucket-config.md)
+ [S3 수명 주기 이벤트 알림 구성](lifecycle-configure-notification.md)
+ [수명 주기 구성의 요소](intro-lifecycle-rules.md)
+ [S3가 수명 주기 구성의 충돌을 처리하는 방법](lifecycle-conflicts.md)
+ [S3 수명 주기 구성의 예제](lifecycle-configuration-examples.md)
+ [Amazon S3 수명 주기 문제 해결](troubleshoot-lifecycle.md)

# Amazon S3 수명 주기를 사용하여 객체 전환
<a name="lifecycle-transition-general-considerations"></a>

S3 수명 주기 구성에 이전 작업을 추가하여 Amazon S3에 다른 Amazon S3 스토리지 클래스로 객체를 이동하도록 지시할 수 있습니다. 스토리지 클래스에 대한 자세한 정보는 [Amazon S3 스토리지 클래스 이해 및 관리](storage-class-intro.md)를 참조하십시오. 이러한 방식으로 S3 수명 주기 구성을 사용할 수 있는 경우의 몇 가지 예에는 다음이 포함됩니다.
+ 객체에 자주 액세스하지 않는 경우, 해당 객체를 S3 Standard-IA 스토리지 클래스로 전환할 수 있습니다.
+ 실시간으로 액세스할 필요가 없는 객체를 S3 Glacier Flexible Retrieval 또는 S3 Glacier Deep Archive 스토리지 클래스에 아카이브할 수 있습니다.

**참고**  
암호화된 객체는 스토리지 클래스 전환 프로세스 전체에서 암호화된 상태로 유지됩니다.

## Supported transitions
<a name="lifecycle-general-considerations-transition-sc"></a>

S3 수명 주기 구성에서, 객체를 한 스토리지 클래스에서 다른 스토리지 클래스로 전환하여 스토리지 비용을 절약하도록 규칙을 정의할 수 있습니다. 객체의 액세스 패턴을 모르거나 시간이 지남에 따라 액세스 패턴이 변하면 자동 비용 절감을 위해 객체를 S3 Intelligent-Tiering 스토리지 클래스로 전환할 수 있습니다. 스토리지 클래스에 대한 자세한 내용은 [Amazon S3 스토리지 클래스 이해 및 관리](storage-class-intro.md) 섹션을 참조하세요.

Amazon S3은 다음 다이어그램과 같이 스토리지 클래스 간 전환을 위한 폭포형(Waterfall) 모델을 지원합니다.

![\[Amazon S3 스토리지 클래스 폭포형 그래픽\]](http://docs.aws.amazon.com/ko_kr/AmazonS3/latest/userguide/images/lifecycle-transitions-v4.png)


### 지원되는 수명 주기 전환
<a name="supported-lifecycle-transitions"></a>

Amazon S3은 S3 수명 주기 구성을 사용하여 스토리지 클래스 간에 다음과 같은 수명 주기 전환을 지원합니다.
+ S3 Standard 스토리지 클래스에서 S3 Standard-IA, S3 Intelligent-Tiering, S3 One Zone-IA, S3 Glacier Instant Retrieval, S3 Glacier Flexible Retrieval 또는 S3 Glacier Deep Archive 스토리지 클래스로 전환
+ S3 Standard-IA 스토리지 클래스에서 S3 Intelligent-Tiering, S3 One Zone-IA, S3 Glacier Instant Retrieval, S3 Glacier Flexible Retrieval 또는 S3 Glacier Deep Archive 스토리지 클래스로 전환
+ S3 Intelligent-Tiering 스토리지 클래스는 S3 Intelligent-Tiering 액세스 티어에 따라 다른 스토리지 클래스로 전환할 수 있습니다. 각 액세스 티어에 대해 다음과 같은 전환이 가능합니다.
  + Frequent Access 티어 또는 Infrequent Access 티어에서 S3 One Zone-IA, S3 Glacier Instant Retrieval, S3 Glacier Flexible Retrieval 또는 S3 Glacier Deep Archive로 전환
  + Archive Instant Access 티어에서 S3 Glacier Instant Retrieval, S3 Glacier Flexible Retrieval 또는 S3 Glacier Deep Archive 스토리지 클래스로 전환
  + Archive Access 티어에서 S3 Glacier Flexible Retrieval 또는 S3 Glacier Deep Archive 스토리지 클래스로 전환
  + Deep Archive Access 티어에서 S3 Glacier Deep Archive 스토리지 클래스로 전환
+ S3 One Zone-IA 스토리지 클래스에서 S3 Glacier Flexible Retrieval 또는 S3 Glacier Deep Archive 스토리지 클래스로 전환
+ S3 Glacier Instant Retrieval 스토리지 클래스에서 S3 Glacier Flexible Retrieval 또는 S3 Glacier Deep Archive 스토리지 클래스로 전환
+ S3 Glacier Flexible Retrieval 스토리지 클래스에서 S3 Glacier Deep Archive 스토리지 클래스로 전환

**참고**  
버전 관리가 활성화된 버킷 또는 버전 관리가 일시 중지된 버킷의 경우, 복제 상태가 `Pending`인 객체를 전환할 수 없습니다.

## 전환에 대한 제약 조건 및 고려 사항
<a name="lifecycle-configuration-constraints"></a>

수명 주기 스토리지 클래스 전환에는 다음과 같은 제약이 있습니다.

**128KB 미만의 객체는 기본적으로 어떤 스토리지 클래스로도 전환되지 않습니다.**  
Amazon S3는 128KB 미만의 객체가 스토리지 클래스로 전환되지 않도록 하는 기본 동작을 S3 수명 주기 구성에 적용합니다. 각 객체마다 전환 요청 요금이 부과되므로, 128KB 미만의 객체는 전환하지 않는 것이 좋습니다. 즉, 소형 객체의 경우 전환 비용이 스토리지 절감액보다 클 수 있습니다. 전환 요청 비용에 대한 자세한 내용은 [Amazon S3 요금](https://aws.amazon.com/s3/pricing/) 페이지의 **스토리지 및 요청** 탭에서 **요청 및 데이터 검색**을 참조하세요.

 더 작은 객체가 전환되도록 하려면 사용자 지정 최소 크기(`ObjectSizeGreaterThan`) 또는 최대 크기(`ObjectSizeLessThan`)를 지정하는 [객체 크기 필터](intro-lifecycle-rules.md#intro-lifecycle-rules-filter)를 수명 주기 전환 규칙에 추가할 수 있습니다. 자세한 내용은 [예제: 128KB 미만의 객체 전환 허용](lifecycle-configuration-examples.md#lc-small-objects) 섹션을 참조하세요.

**참고**  
2024년 9월 Amazon S3는 소형 객체의 기본 전환 동작을 다음과 같이 업데이트했습니다.  
**업데이트된 기본 전환 동작** - 2024년 9월부터 기본 동작은 128KB 미만의 객체가 스토리지 클래스로 전환되는 것을 금지합니다.
**이전의 기본 전환 동작** - 2024년 9월 이전의 기본 동작은 128KB 미만의 객체를 S3 Glacier Flexible Retrieval 및 S3 Glacier Deep Archive 스토리지 클래스로만 전환할 수 있었습니다.
2024년 9월 이전에 생성된 구성은 수정하지 않는 한 이전 전환 동작을 유지합니다. 즉, 규칙을 생성, 편집 또는 삭제하면 구성의 기본 전환 동작이 업데이트된 동작으로 변경됩니다. 사용 사례에 필요한 경우 128KB 미만의 객체가 S3 Glacier Flexible Retrieval 및 S3 Glacier Deep Archive로 전환되도록 기본 전환 동작을 변경할 수 있습니다. 이렇게 하려면 [PutBucketLifecycleConfiguration](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html) 요청에서 선택적 `x-amz-transition-default-minimum-object-size` 헤더를 사용하세요.

**객체를 S3 Standard-IA 또는 S3 One Zone-IA로 전환하기 전에 최소 30일 동안 저장해야 합니다.**  
객체를 S3 Standard-IA 또는 S3 One Zone-IA로 전환하기 전에 Amazon S3에 최소 30일 동안 해당 객체를 보관해야 합니다. 예를 들어, 생성 후 1일이 지난 객체를 S3 Standard-IA 스토리지 클래스로 전환하도록 요구하는 수명 주기 규칙을 생성할 수 없습니다. 새 객체는 더 자주 액세스되거나 S3 Standard-IA 또는 S3 One Zone-IA 스토리지에 적합해지기 전에 삭제되는 경우가 종종 있기 때문에 Amazon S3은 최초 30일 동안에는 이러한 전환을 지원하지 않습니다.

마찬가지로, 최신이 아닌 객체를 전환할 경우(버전이 지정된 버킷에서) 최소 30일이 경과한 최신 버전이 아닌 객체만 S3 Standard-IA 또는 S3 One Zone-IA 스토리지로 전환할 수 있습니다. 모든 스토리지 클래스의 최소 스토리지 기간 목록은 [Amazon S3 스토리지 클래스 비교](storage-class-intro.md#sc-compare) 섹션을 참조하세요.

**최소 저장 기간 이전에 객체를 전환하면 요금이 부과됩니다.**  
특정 스토리지 클래스에는 최소 객체 저장 기간이 있습니다. 최소 기간 이전에 이러한 스토리지 클래스에서 객체를 전환하는 경우 해당 기간의 나머지 기간에 대해 요금이 부과됩니다. 최소 저장 기간이 있는 스토리지 클래스에 대한 자세한 내용은 [Amazon S3 스토리지 클래스 비교](storage-class-intro.md#sc-compare) 섹션을 참조하세요.

최소 저장 기간이 경과하기 전에 한 스토리지 클래스에서 다른 스토리지 클래스로 객체를 전환하는 단일 수명 주기 규칙은 만들 수 없습니다.

 예를 들어, S3 Glacier Instant Retrieval의 경우 최소 저장 기간은 90일입니다. 4일 후에 객체를 S3 Glacier Instant Retrieval로 전환하고 20일 후에 객체를 S3 Glacier Deep Archive로 전환하는 수명 주기 규칙을 지정할 수 없습니다. 이 경우 S3 Glacier Deep Archive 전환은 최소 94일 후에 이루어져야 합니다.

이를 달성하기 위해 두 규칙을 지정할 수 있지만, 사용자는 최소 저장 기간 요금을 지불하게 됩니다. 비용 고려 사항에 대한 자세한 내용은 [Amazon S3 요금](https://aws.amazon.com/s3/pricing/)을 참조하세요.

S3 수명 주기 생성 방법에 대한 자세한 내용은 [버킷에서 S3 수명 주기 구성 설정](how-to-set-lifecycle-configuration-intro.md) 섹션을 참조하세요.

## S3 Glacier Flexible Retrieval 및 S3 Glacier Deep Archive 스토리지 클래스로 전환(객체 아카이브)
<a name="before-deciding-to-archive-objects"></a>

S3 수명 주기 구성을 사용하여 아카이브를 위해 객체를 S3 Glacier Flexible Retrieval 또는 S3 Glacier Deep Archive 스토리지 클래스로 전환할 수 있습니다.

객체를 보관하기 전에 이와 관련된 고려 사항에 대해 설명한 다음 섹션들을 살펴보세요.

### 일반적인 고려 사항
<a name="transition-glacier-general-considerations"></a>

다음은 객체를 보관하기 전에 고려할 일반적인 사항들입니다.
+ 암호화된 객체는 스토리지 클래스 전환 프로세스 전체에서 암호화된 상태로 유지됩니다.
+ S3 Glacier Flexible Retrieval 또는 S3 Glacier Deep Archive 스토리지 클래스에 저장된 객체는 실시간으로 사용할 수 없습니다.

  아카이브된 객체는 Amazon S3 객체이지만 아카이브된 객체에 액세스하려면 먼저 해당 객체의 임시 복사본을 복원해야 합니다. 복원된 객체 사본은 요청자가 복원 요청에서 지정한 기간 동안만 사용할 수 있습니다. 그런 다음 Amazon S3가 임시 복사본을 삭제하고 객체는 S3 Glacier Flexible Retrieval에 아카이브된 상태로 유지됩니다.

  Amazon S3 콘솔을 사용하거나 코드에 AWS SDK 래퍼 라이브러리 또는 Amazon S3 REST API를 사용하여 프로그래밍 방식으로 객체를 복원할 수 있습니다. 자세한 내용은 [아카이브된 객체 복원](restoring-objects.md) 섹션을 참조하세요.
+ S3 Glacier Flexible Retrieval 스토리지 클래스에 저장된 객체는 S3 Glacier Deep Archive 스토리지 클래스로만 전환할 수 있습니다.

  S3 수명 주기 구성 규칙을 사용하여 객체의 스토리지 클래스를 S3 Glacier Flexible Retrieval에서 S3 Glacier Deep Archive 스토리지 클래스로만 변환할 수 있습니다. S3 Glacier Flexible Retrieval에 저장된 객체의 스토리지 클래스를 S3 Glacier Deep Archive가 아닌 스토리지 클래스로 변경하려면 먼저 복원 작업을 사용하여 객체의 임시 복사본을 만들어야 합니다. 그런 다음 복사 작업을 통해 S3 Standard, S3 Intelligent-Tiering, S3 Standard-IA, S3 One Zone-IA 또는 Reduced Redundancy를 스토리지 클래스로 지정하여 객체를 덮어씁니다.
+ 객체를 S3 Glacier Deep Archive 스토리지 클래스로 전환할 때는 한 방향으로만 이동할 수 있습니다.

  S3 수명 주기 구성 규칙을 사용하여 객체의 스토리지 클래스를 S3 Glacier Deep Archive에서 다른 스토리지 클래스로 변환할 수는 없습니다. 아카이빙된 객체의 스토리지 클래스를 다른 스토리지 클래스로 변경하고자 하는 경우, 먼저 복원 작업을 통해 객체의 임시 사본을 만들어야 합니다. 그런 다음 복사 작업을 사용하여 S3 Standard, S3 Intelligent-Tiering, S3 Standard-IA, S3 One Zone-IA, S3 Glacier Instant Retrieval, S3 Glacier Flexible Retrieval 또는 Reduced Redundancy Storage를 스토리지 클래스로 지정하여 객체를 덮어씁니다.
**참고**  
복원된 객체에 대한 복사 작업은 Amazon S3 콘솔에서 S3 Glacier Flexible Retrieval 또는 S3 Glacier Deep Archive 스토리지 클래스에 있는 객체에 대해 지원되지 않습니다. 이러한 유형의 복사 작업에는 AWS Command Line Interface(AWS CLI), AWS SDK 또는 REST API를 사용하십시오.

  S3 Glacier Flexible Retrieval 및 S3 Glacier Deep Archive 스토리지 클래스에 저장된 객체는 Amazon S3를 통해서만 확인하고 사용할 수 있습니다. 별도의 Amazon Glacier 서비스를 통해 사용할 수는 없습니다.

  이러한 객체는 Amazon S3 객체이므로 Amazon S3 콘솔 또는 Amazon S3 API를 통해서만 액세스할 수 있습니다. 별도의 Amazon Glacier 콘솔 또는 Amazon Glacier API를 통해서는 아카이브된 객체에 액세스할 수 없습니다.

### 비용 고려 사항
<a name="glacier-pricing-considerations"></a>

자주 액세스하지 않는 데이터를 몇 달 또는 몇 년 동안 아카이브할 계획이라면 S3 Glacier Flexible Retrieval 및 S3 Glacier Deep Archive 스토리지 클래스로 스토리지 비용을 절감할 수 있습니다. 그러나 S3 Glacier Flexible Retrieval 및 S3 Glacier Deep Archive 스토리지 클래스가 적합한지 확인하려면 다음을 고려하세요.
+ **스토리지 오버헤드 요금** - 객체를 S3 Glacier Flexible Retrieval 또는 S3 Glacier Deep Archive 스토리지 클래스로 전환할 때 객체 관리를 위한 메타데이터를 수용하기 위해 고정된 양의 스토리지가 각 객체에 추가됩니다.
  + S3 Glacier Flexible Retrieval 또는 S3 Glacier Deep Archive에 아카이브된 각 객체에 대해 Amazon S3가 객체 이름 및 기타 메타데이터용으로 8KB의 스토리지를 사용합니다. Amazon S3은 이 메타데이터를 저장하므로 Amazon S3 API를 사용하여 아카이브된 객체의 실시간 목록을 얻을 수 있습니다. 자세한 내용은 [Get Bucket(List Objects)](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGET.html)을 참조하세요. 이 추가 스토리지에 대해 S3 Standard 요금이 청구됩니다.
  +  S3 Glacier Flexible Retrieval 또는 S3 Glacier Deep Archive에 아카이브된 각 객체에 대해 Amazon S3가 인덱스 및 관련 메타데이터용으로 32KB의 스토리지를 추가합니다. 이 추가 데이터는 객체를 식별하고 복원하는 데 필요합니다. 이 추가 스토리지에 대해 S3 Glacier Flexible Retrieval 또는 S3 Glacier Deep Archive 요금이 청구됩니다.

  작은 크기의 객체를 보관할 경우 이러한 스토리지 요금을 고려해야 합니다. 또한 크기가 작은 여러 객체를 더 적은 수의 크기가 큰 객체로 통합하면 오버헤드 비용을 줄일 수 있습니다.
+ **객체의 아카이브 기간(일)** - S3 Glacier Flexible Retrieval 또는 S3 Glacier Deep Archive는 장기 아카이브 솔루션입니다. 최소 스토리지 기간은 S3 Glacier Flexible Retrieval 스토리지 클래스의 경우 90일, S3 Glacier Deep Archive의 경우 180일입니다. 삭제하는 객체가 최소 스토리지 기간보다 오래 아카이브된 경우 Amazon Glacier에 아카이브된 데이터를 삭제해도 요금이 부과되지 않습니다. 최소 기간 내에 아카이브된 객체를 삭제하거나 덮어쓸 경우 Amazon S3은 비례 할당으로 계산된 조기 삭제 요금을 부과합니다. 조기 삭제 요금에 대한 자세한 내용은 "Amazon Glacier에서 90일 이전에 객체를 삭제하면 요금은 얼마나 청구되나요?" 섹션을 참조하세요. [Amazon S3 FAQ](https://aws.amazon.com/s3/faqs/#Amazon_S3_Glacier)에 나오는 질문입니다.
+ **S3 Glacier Flexible Retrieval 및 S3 Glacier Deep Archive 전환 요청 요금** - S3 Glacier Flexible Retrieval 또는 S3 Glacier Deep Archive 스토리지 클래스로 전환하는 각 객체는 하나의 전환 요청을 구성합니다. 그러한 각 요청에 대해 비용이 부과됩니다. 많은 수의 객체를 이전할 경우 요청 요금을 고려해야 합니다. 작은 객체, 특히 128KB 미만의 객체를 포함하는 여러 객체를 보관하는 경우, 수명 주기 객체 크기 필터를 사용하여 전환 과정에서 작은 객체를 필터링하여 요청 비용을 줄이는 것이 좋습니다.
+ **S3 Glacier Flexible Retrieval 및 S3 Glacier Deep Archive 데이터 복원 요금** - S3 Glacier Flexible Retrieval 및 S3 Glacier Deep Archive는 자주 액세스하지 않는 데이터의 장기 아카이브를 위한 솔루션입니다. 데이터 복원 요금에 대한 자세한 내용은 "Amazon Glacier에서 데이터를 검색하는 데 비용이 얼마나 드나요?" 섹션을 참조하세요. [Amazon S3 FAQ](https://aws.amazon.com/s3/faqs/#Amazon_S3_Glacier)에 나오는 질문입니다. Amazon Glacier에서 데이터를 복원하는 방법에 대한 자세한 내용은 [아카이브된 객체 복원](restoring-objects.md) 섹션을 참조하세요.

**참고**  
S3 수명 주기 이전은 객체를 S3 Glacier Flexible Retrieval 및 S3 Glacier Deep Archive로 비동기적으로 이전합니다. S3 수명 주기 구성 규칙의 전환 날짜와 실제 전환 작업 수행 날짜 간에 약간의 지연이 발생할 수 있습니다. 이 경우 규칙에 지정된 이전 날짜를 기준으로 이전한 스토리지 클래스의 기본 요금이 청구됩니다.

Amazon S3 제품 세부 정보 페이지에 자세한 요금 정보와 Amazon S3 객체 아카이브의 요금 계산 예제가 나와 있습니다. 자세한 내용은 다음 항목을 참조하세요.
+  "Amazon Glacier에 아카이브된 Amazon S3 객체에 대한 스토리지 요금은 어떻게 계산되나요?" [Amazon S3 FAQ](https://aws.amazon.com/s3/faqs/#Amazon_S3_Glacier)에 나옵니다.
+  "Amazon Glacier에서 90일 이전에 객체를 삭제하면 요금은 얼마나 청구되나요?" [Amazon S3 FAQ](https://aws.amazon.com/s3/faqs/#Amazon_S3_Glacier)에 나옵니다.
+  "Amazon Glacier에서 데이터를 검색하는 데 비용이 얼마나 드나요?" [Amazon S3 FAQ](https://aws.amazon.com/s3/faqs/#Amazon_S3_Glacier)에 나옵니다.
+  다양한 스토리지 클래스의 스토리지 비용에 대한 [Amazon S3 요금](https://aws.amazon.com/s3/pricing/) 

### 보관된 객체의 복원
<a name="restore-glacier-objects-concepts"></a>

보관된 객체에는 실시간으로 액세스할 수 없습니다. 먼저 복원 요청을 시작한 후 요청에 지정된 기간 동안 객체의 임시 사본을 사용할 수 있게 될 때까지 기다려야 합니다. 복원된 객체의 임시 복사본을 받으면 객체의 스토리지 클래스는 S3 Glacier Flexible Retrieval 또는 S3 Glacier Deep Archive에 유지됩니다. ([https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectHEAD.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectHEAD.html) 또는 [https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectGET.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectGET.html) API 작업 요청은 S3 Glacier Flexible Retrieval 또는 S3 Glacier Deep Archive를 스토리지 클래스로 반환합니다.) 

**참고**  
아카이브를 복원하면 아카이브(S3 Glacier Flexible Retrieval 또는 S3 Glacier Deep Archive 요금) 및 임시로 복원한 복사본(S3 Standard 스토리지 요금) 모두에 대해 요금이 청구됩니다. 요금에 대한 자세한 내용은 [Amazon S3 요금](https://aws.amazon.com/s3/pricing/)을 참조하세요.

프로그래밍 방식으로 또는 Amazon S3 콘솔을 사용하여 객체 복사본을 복원할 수 있습니다. Amazon S3는 각 객체에 대한 복원 요청을 한 번에 하나씩만 처리합니다. 자세한 내용은 [아카이브된 객체 복원](restoring-objects.md) 섹션을 참조하세요.

# 객체 만료
<a name="lifecycle-expire-general-considerations"></a>

S3 수명 주기 구성에 이전 작업을 추가하여 Amazon S3가 수명 주기 종료 시 객체를 삭제하도록 지시할 수 있습니다. 수명 주기 구성을 기준으로 객체의 수명이 다하면 Amazon S3는 버킷이 어떤 [S3 버전 관리](Versioning.md) 상태인지에 따라 `Expiration` 작업을 수행합니다.
+ **버전 관리가 활성화되지 않은 버킷** - Amazon S3가 제거를 위해 객체를 대기열에 넣고 비동기식으로 제거하여 객체를 영구적으로 제거합니다.
+ **버전 관리가 활성화된 버킷** - 최신 객체 버전이 삭제 마커가 아닌 경우 Amazon S3는 고유한 버전 ID를 갖는 삭제 마커를 추가합니다. 이를 통해 최신 버전이 최신이 아닌 버전이 되고 삭제 마커가 최신 버전이 됩니다.
+ **버전 관리가 일시 중지된 버킷** - Amazon S3에서 버전 ID가 Null인 삭제 마커를 생성합니다. 삭제 마커는 버전 계층 구조에서 null 버전 ID로 모든 객체 버전을 대체함으로써 결과적으로 객체를 삭제합니다.

버전이 지정된 버킷(즉, 버전 관리를 사용하거나 버전 관리가 일시 중지된 버킷)의 경우, Amazon S3가 `Expiration` 작업을 처리하는 방식에 대한 몇 가지 고려 사항이 있습니다. 버전 관리가 활성화되거나 버전 관리가 일시 중지된 버킷에는 다음이 적용됩니다.
+ 객체 만료가 객체의 현재 버전에만 적용됩니다(비최신 객체 버전에 영향이 없음).
+ 객체 버전이 1개 이상이고 삭제 마커가 최신 버전이면 Amazon S3은 작업을 수행하지 않습니다.
+ 최신 객체 버전이 유일한 객체 버전이면서 삭제 마커인 경우(*만료된 객체 삭제 마커*라고도 하는데, 이 경우 모든 객체 버전이 삭제되고 하나의 삭제 마커만 남게 됨), Amazon S3은 만료된 객체 삭제 마커를 제거합니다. `Expiration` 작업을 사용하여 Amazon S3에 만료된 객체 삭제 마커를 제거하도록 지시할 수도 있습니다. 예제는 [버전 관리를 사용하는 버킷에서 만료된 객체 삭제 마커 제거](lifecycle-configuration-examples.md#lifecycle-config-conceptual-ex7)을 참조하세요.
+ `NoncurrentVersionExpiration` 작업 요소를 사용하여 Amazon S3가 비최신 객체 버전을 영구적으로 삭제하도록 지시할 수 있습니다. 이러한 삭제된 객체는 복구할 수 없습니다. 이 만료는 객체가 비최신 상태가 된 시점부터 특정 일수를 기준으로 할 수 있습니다. 일수 외에도 유지할 비최신 버전의 최대 개수를 제공할 수 있습니다(1\$1100개). 이 값은 Amazon S3가 특정 버전에서 관련 작업을 수행하기 전에 얼마나 많은 새로운 비최신 버전이 있어야 하는지를 지정합니다. 비최신 버전의 최대 개수를 지정하려면 `Filter` 요소 또한 제공해야 합니다. `Filter` 요소를 지정하지 않은 상태로 비최신 버전의 최대 수를 제공하는 경우 Amazon S3에서 `InvalidRequest` 오류가 발생합니다. `NoncurrentVersionExpiration` 작업 요소 사용에 대한 자세한 내용은 [수명 주기 작업을 설명할 요소](intro-lifecycle-rules.md#intro-lifecycle-rules-actions) 단원을 참조하세요.
+ Amazon S3는 S3 객체 잠금 구성이 적용된 비최신 버전의 객체에 대해서는 어떠한 조치도 취하지 않습니다.
+ 복제 상태가 `Pending`인 객체의 경우 Amazon S3는 최신 또는 비최신 버전의 객체에 대해 어떠한 조치도 취하지 않습니다.

자세한 내용은 [S3 버전 관리로 여러 버전의 객체 유지](Versioning.md) 섹션을 참조하세요.

**중요**  
S3 수명 주기 구성에 규칙이 여러 개인 경우 객체는 같은 날에 여러 가지 S3 수명 주기 작업을 수행할 수 있습니다. 이러한 경우 Amazon S3은 다음과 같은 일반 규칙을 따릅니다.  
영구 삭제는 전환에 우선합니다.
이전은 [삭제 마커](DeleteMarker.md) 생성에 우선합니다.
객체에서 S3 Glacier Flexible Retrieval 및 S3 Standard-IA(또는 S3 One Zone-IA) 이전을 모두 사용할 수 있는 경우 Amazon S3가 S3 Glacier Flexible Retrieval 이전을 선택합니다.
 예시는 [중복 필터 및 충돌하는 수명 주기 작업의 예제](lifecycle-conflicts.md#lifecycle-config-conceptual-ex5) 섹션을 참조하세요.

**기존 객체 및 새 객체**  
버킷에 수명 주기 구성을 추가할 경우 구성 규칙이 기존 객체는 물론 나중에 추가하는 객체에도 적용됩니다. 예를 들어, 특정 접두사가 있는 객체를 생성한 후 30일이 경과하면 만료시키는 만료 작업을 포함하는 수명 주기 구성 규칙을 오늘 추가할 경우, Amazon S3는 30일 이상 경과하고 해당 접두사가 있는 모든 기존 객체를 삭제 대기열에 넣습니다.

**중요**  
버킷 정책을 사용하여 S3 수명 주기 규칙에 따른 삭제 또는 이전을 방지할 수는 없습니다. 예를 들어, 버킷 정책이 모든 보안 주체에 대한 모든 작업을 거부하더라도 S3 수명 주기 구성은 여전히 정상적으로 작동합니다.

## 객체 만료 시기를 확인하는 방법
<a name="lifecycle-expire-when"></a>

현재 버전의 객체가 만료될 예정인 시기를 알아보려면 [https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectHEAD.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectHEAD.html) 또는 [https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectGET.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectGET.html) API 작업을 사용합니다. 이러한 API 작업은 현재 버전의 객체를 더 이상 캐시할 수 없는 날짜 및 시간을 제공하는 응답 헤더를 반환합니다.

**참고**  
만료 날짜와 Amazon S3에서 객체를 제거하는 날짜 사이의 지연이 있을 수 있습니다. 만료된 객체와 관련된 만료 또는 스토리지 시간에 대해서는 요금이 청구되지 않습니다.
수명 주기 규칙을 업데이트, 비활성화 또는 삭제하기 전에 `LIST` API 작업(예: [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html), [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectVersions.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectVersions.html), 및 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html)) 또는 [S3 Inventory를 사용한 데이터 카탈로그화 및 분석](storage-inventory.md)를 사용하여 사용 사례에 따라 Amazon S3에서 적합한 객체를 전환 및 만료했는지 확인하세요.

## 최소 스토리지 기간 요금
<a name="lifecycle-expire-minimum-storage"></a>

S3 Standard-IA 또는 S3 One Zone-IA 스토리지에 30일 미만의 기간 동안 저장되어 있었던 객체를 만료 처리하는 S3 수명 주기 만료 규칙을 생성할 경우, 30일에 해당하는 요금이 청구됩니다. S3 Glacier Flexible Retrieval 스토리지에 90일 미만의 기간 동안 저장되어 있었던 객체를 만료 처리하는 수명 주기 만료 규칙을 생성할 경우 90일에 해당하는 요금이 청구됩니다. S3 Glacier Deep Archive 스토리지에 180일 미만의 기간 동안 저장되어 있었던 객체를 만료 처리하는 수명 주기 만료 규칙을 생성할 경우, 180일에 해당하는 요금이 청구됩니다.

자세한 내용은 [Amazon S3 요금](https://aws.amazon.com/s3/pricing/)을 참조하세요.

# 버킷에서 S3 수명 주기 구성 설정
<a name="how-to-set-lifecycle-configuration-intro"></a>

버킷에 Amazon S3 콘솔, AWS Command Line Interface(AWS CLI), AWS SDK 또는 Amazon S3 REST API를 사용하여 Amazon S3 수명 주기 구성을 설정할 수 있습니다. S3 수명 주기 구성에 대해서는 [객체 수명 주기 관리](object-lifecycle-mgmt.md) 섹션을 참조하세요.

**참고**  
디렉터리 버킷의 수명 주기 구성을 보거나 편집하려면 AWS CLI, AWS SDK 또는 Amazon S3 REST API를 사용합니다. 자세한 내용은 [디렉터리 버킷의 S3 수명 주기 작업](directory-buckets-objects-lifecycle.md) 섹션을 참조하세요.

S3 수명 주기 구성에서 **수명 주기 규칙을 사용하여 객체의 수명 기간 동안 Amazon S3가 수행할 작업을 정의합니다. 예를 들어, 객체를 다른 스토리지 클래스로 이전하거나, 객체를 아카이브하거나, 지정된 시간이 지나면 객체를 만료(삭제)하는 규칙을 정의할 수 있습니다.

## S3 수명 주기 고려 사항
<a name="lifecycle-considerations"></a>

수명 주기 구성을 설정하기 전에 다음 사항에 유의하세요.

**수명 주기 구성 전파 지연**  
버킷에 S3 수명 주기 구성을 추가할 때 일반적으로 새로운 또는 업데이트된 수명 주기 구성이 모든 Amazon S3 시스템에 완전히 전파될 때까지 약간의 지연 시간이 있습니다. 구성이 완전히 적용되려면 몇 분간 기다려야 합니다. 이러한 지연은 S3 수명 주기 구성을 삭제할 때도 발생할 수 있습니다.

**이전 또는 만료 지연**  
수명 주기 규칙이 충족되는 시점과 규칙에 대한 작업이 완료되는 시점 사이에 지연이 있을 수 있습니다. 예를 들어, 수명 주기 규칙에 따라 1월 1일에 객체 세트가 만료된다고 가정해 보겠습니다. 1월 1일에 만료 규칙이 충족되었더라도 Amazon S3는 며칠 또는 몇 주가 지나야 이러한 객체를 실제로 삭제할 수 있습니다. 이러한 지연은 S3 Lifecycle이 이전 또는 만료를 위해 객체를 비동기적으로 대기시키기 때문에 발생합니다. 그러나 결제 변경 사항은 작업이 완료되지 않았더라도 수명 주기 규칙이 충족되는 즉시 적용됩니다. 자세한 내용은 [결제 변경 사항](#lifecycle-billing) 섹션을 참조하세요. 활성 수명 주기 규칙에 의한 업데이트의 영향을 모니터링하려면 [수명 주기 규칙에 따라 취해진 조치를 모니터링하려면 어떻게 해야 하나요?](troubleshoot-lifecycle.md#troubleshoot-lifecycle-2) 섹션을 참조하세요.

**수명 주기 규칙 업데이트, 사용 중지 또는 삭제**  
수명 주기 규칙을 사용 중지 또는 삭제하는 경우 Amazon S3가 새로운 객체에 대한 삭제 또는 이전 예약을 중지하기 전에 약간의 지연이 발생합니다. 이미 예약된 객체는 모두 예약이 취소되고 삭제 또는 전환되지 않습니다.

**참고**  
수명 주기 규칙을 업데이트, 비활성화 또는 삭제하기 전에 `LIST` API 작업(예: [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html), [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectVersions.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectVersions.html), 및 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html)) 또는 [S3 Inventory를 사용한 데이터 카탈로그화 및 분석](storage-inventory.md)를 사용하여 사용 사례에 따라 Amazon S3에서 적합한 객체를 전환 및 만료했는지 확인하세요. 수명 주기 규칙을 업데이트, 비활성화 또는 삭제하는 데 문제가 있는 경우 [Amazon S3 수명 주기 문제 해결](troubleshoot-lifecycle.md) 섹션을 참조하세요.

**기존 객체 및 새 객체**  
버킷에 수명 주기 구성을 추가할 경우 구성 규칙이 기존 객체는 물론 나중에 추가하는 객체에도 적용됩니다. 예를 들어, 특정 접두사가 있는 객체를 생성한 후 30일이 경과하면 만료시키는 만료 작업을 포함하는 수명 주기 구성 규칙을 오늘 추가할 경우, Amazon S3는 30일 이상 경과하고 해당 접두사가 있는 모든 기존 객체를 삭제 대기열에 넣습니다.

**수명 주기 규칙의 영향 모니터링**  
활성 수명 주기 규칙에 의한 업데이트의 영향을 모니터링하려면 [수명 주기 규칙에 따라 취해진 조치를 모니터링하려면 어떻게 해야 하나요?](troubleshoot-lifecycle.md#troubleshoot-lifecycle-2) 섹션을 참조하세요.

**결제 변경 사항**  
수명 주기 구성 규칙이 충족되는 시점과 규칙 충족에 따라 트리거된 조치가 실행되는 시점 사이에는 지연이 있을 수 있습니다. 그러나 결제 변경은 조치가 실행되지 않더라도 수명 주기 구성 규칙이 충족되는 즉시 변경됩니다.

예를 들어, 객체 만료 시간 이후에는 해당 객체가 즉시 삭제되지 않아도 스토리지 비용이 청구되지 않습니다. 마찬가지로, 객체가 S3 Glacier Flexible Retrieval 스토리지 클래스로 즉시 전환되지 않은 경우에도 객체 전환 시간이 경과하는 순간부터 S3 Glacier Flexible Retrieval 스토리지 요금이 부과됩니다.

그러나 S3 Intelligent-Tiering 스토리지 클래스로의 수명 주기 전환은 예외입니다. 객체가 S3 Intelligent-Tiering 스토리지 클래스로 전환되기 전까지는 결제 변경이 발생하지 않습니다.

**여러 규칙 또는 상충하는 규칙**  
S3 수명 주기 구성에 규칙이 여러 개인 경우 객체는 같은 날에 여러 가지 S3 수명 주기 작업을 수행할 수 있습니다. 이러한 경우 Amazon S3은 다음과 같은 일반 규칙을 따릅니다.
+ 영구 삭제는 전환에 우선합니다.
+ 이전은 [삭제 마커](DeleteMarker.md) 생성에 우선합니다.
+ 객체에서 S3 Glacier Flexible Retrieval 및 S3 Standard-IA(또는 S3 One Zone-IA) 이전을 모두 사용할 수 있는 경우 Amazon S3가 S3 Glacier Flexible Retrieval 이전을 선택합니다.

 예시는 [중복 필터 및 충돌하는 수명 주기 작업의 예제](lifecycle-conflicts.md#lifecycle-config-conceptual-ex5) 섹션을 참조하세요.

## S3 수명 주기 구성을 설정하는 방법
<a name="how-to-set-lifecycle-configuration"></a>

범용 버킷에 Amazon S3 콘솔, AWS Command Line Interface(AWS CLI), AWS SDK 또는 Amazon S3 REST API를 사용하여 Amazon S3 수명 주기 구성을 설정할 수 있습니다.

AWS CloudFormation 템플릿에 대한 자세한 내용은 *CloudFormation 사용 설명서*의 [AWS CloudFormation 템플릿 작업](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-guide.html) 및 [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3-bucket.html#aws-resource-s3-bucket--examples](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3-bucket.html#aws-resource-s3-bucket--examples) 섹션을 참조하세요.

### S3 콘솔 사용
<a name="create-lifecycle"></a>

공유 접두사(공통 문자열로 시작하는 객체 이름) 또는 태그를 사용하여 버킷의 모든 객체 또는 일부 객체에 대해 수명 주기 규칙을 정의할 수 있습니다. 수명 주기 규칙에서는 현재 객체 버전과 비최신 객체 버전 관련 작업을 정의할 수 있습니다. 자세한 내용은 다음을 참조하세요.
+ [객체 수명 주기 관리](object-lifecycle-mgmt.md)
+ [S3 버전 관리로 여러 버전의 객체 유지](Versioning.md)

**수명 주기 규칙 생성**

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)에서 S3 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **범용 버킷**을 선택합니다.

1. 버킷 목록에서 수명 주기 규칙을 생성할 버킷의 이름을 선택합니다.

1. **관리(Management)** 탭을 선택하고 **수명 주기 규칙 생성(Create lifecycle rule)**을 선택합니다.

1.  **수명 주기 규칙 이름(Lifecycle rule name)**에 규칙의 이름을 입력합니다.

   단, 버킷 내에서 고유한 이름을 갖도록 합니다.

1. 수명 주기 규칙의 범위를 선택합니다.
   + *특정 접두사나 태그가 있는 모든 객체*에 이 수명 주기 규칙을 적용하려면 **Limit the scope to specific prefixes or tags(범위를 특정 접두사 또는 태그로 제한)**을 선택합니다.
     + 접두사로 범위를 제한하려면 **접두사(Prefix)**에 접두사를 입력합니다.
     + 태그로 범위를 제한하려면 **태그 추가(Add tag)**를 선택하고 태그 키와 값을 입력합니다.

     객체 이름 접두사에 대한 자세한 내용은 [Amazon S3 객체 이름 지정](object-keys.md) 섹션을 참조하세요. 객체 태그에 대한 자세한 내용은 [태그를 사용하여 객체 분류](object-tagging.md) 섹션을 참조하세요.
   + 이 수명 주기 규칙을 *버킷의 모든 객체*에 적용하려면 **이 규칙이 버킷의 *모든* 객체에 적용됨**을 선택한 다음 **이 규칙이 버킷의 모든 객체에 적용됨을 확인합니다**를 선택합니다.

1. 객체 크기별로 규칙을 필터링하려면 **최소 객체 크기 지정**, **최대 객체 크기 지정** 또는 두 옵션을 모두 선택할 수 있습니다.
   + **최소 객체 크기** 또는 **최대 객체 크기**를 지정할 때 값은 0바이트보다 크고 최대 50TB여야 합니다. 이 값을 바이트, KB, MB 또는 GB 단위로 지정할 수 있습니다.
   + 둘 다 지정하는 경우 최대 객체 크기가 최소 객체 크기보다 커야 합니다.
**참고**  
**최소 객체 크기** 및 **최대 객체 크기** 필터는 지정된 값을 제외합니다. 예를 들어 **최소 객체 크기**가 128KB인 객체가 만료되도록 필터를 설정한 경우 정확히 128KB인 객체는 만료되지 않습니다. 대신 규칙은 크기가 128KB를 초과하는 객체에만 적용됩니다.

1. **수명 주기 규칙 작업(Lifecycle rule actions)**에서 다음과 같은 수명 주기 규칙에서 수행할 작업을 선택합니다.
   + 스토리지 클래스 간에 객체의 *현재* 버전 이전
   + 스토리지 클래스 간에 객체의 *이전* 버전 이전
   + 객체의 *현재* 버전 만료
**참고**  
[S3 버전 관리](Versioning.md)가 활성화되지 않은 버킷의 경우 현재 버전이 만료되면 Amazon S3에서 객체를 영구적으로 삭제합니다. 자세한 내용은 [수명 주기 작업 및 버킷의 버전 관리 상태](intro-lifecycle-rules.md#lifecycle-actions-bucket-versioning-state) 섹션을 참조하세요.
   + 객체의 *이전* 버전 영구 삭제
   + 만료된 삭제 마커 또는 불완전한 멀티파트 업로드 삭제 

   선택한 작업에 따라 다른 옵션이 나타납니다.

1. 스토리지 클래스 간에 객체의 **현재 버전을 이전하려면 **스토리지 클래스 간에 객체의 현재 버전 이전**에서 다음을 수행합니다.

   1. **스토리지 클래스 이전**에서 이전할 대상 스토리지 클래스를 선택합니다. 가능한 이전 목록은 [지원되는 수명 주기 전환](lifecycle-transition-general-considerations.md#supported-lifecycle-transitions) 섹션을 참조하세요. 사용자는 다음 스토리지 클래스에서 선택할 수 있습니다.
      + S3 Standard-IA
      + S3 Intelligent-Tiering
      + S3 One Zone-IA
      + S3 Glacier Instant Retrieval
      + S3 Glacier Flexible Retrieval
      + S3 Glacier Deep Archive

   1. **객체 생성일 후 일수(Days after object creation)**에 생성일 후 객체를 이전할 일수를 입력합니다.

   스토리지 클래스에 대한 자세한 정보는 [Amazon S3 스토리지 클래스 이해 및 관리](storage-class-intro.md)를 참조하세요. 최신 객체 버전 또는 이전 객체 버전의 이전 또는 두 버전 모두의 이전을 정의할 수도 있습니다. 버전 관리를 통해 하나의 버킷에서 객체의 여러 버전을 유지할 수 있습니다. 버전 관리에 대한 자세한 내용은 [S3 콘솔 사용](manage-versioning-examples.md#enable-versioning) 섹션을 참조하세요.
**중요**  
S3 Glacier Instant Retrieval, S3 Glacier Flexible Retrieval 또는 Glacier Deep Archive 스토리지 클래스를 선택하면 객체가 Amazon S3에 그대로 유지됩니다. 별도의 Amazon Glacier 서비스를 통해 객체에 직접 액세스할 수 없습니다. 자세한 내용은 [Amazon S3 수명 주기를 사용하여 객체 전환](lifecycle-transition-general-considerations.md) 섹션을 참조하세요.

1. 스토리지 클래스 간에 **비최신 객체 버전을 이전하려면 **스토리지 클래스 간에 비최신 객체 버전 이전**에서 다음을 수행합니다.

   1. **스토리지 클래스 이전**에서 이전할 대상 스토리지 클래스를 선택합니다. 가능한 이전 목록은 [지원되는 수명 주기 전환](lifecycle-transition-general-considerations.md#supported-lifecycle-transitions) 섹션을 참조하세요. 사용자는 다음 스토리지 클래스에서 선택할 수 있습니다.
      + S3 Standard-IA
      + S3 Intelligent-Tiering
      + S3 One Zone-IA
      + S3 Glacier Instant Retrieval
      + S3 Glacier Flexible Retrieval
      + S3 Glacier Deep Archive

   1. **객체가 비최신이 된 후의 일수**에 생성일로부터 며칠 후에 객체를 전환할지 입력합니다.

1. 객체의 **현재 버전을 만료하려면 **Expire current versions of objects**(객체의 현재 버전 만료)에서 **Number of days after object creation**(객체 생성 후 일 수에 일 수)를 입력합니다.
**중요**  
버전 관리를 사용하지 않는 버킷에서 만료 작업을 수행하면 Amazon S3에서는 객체를 영구적으로 제거합니다. 수명 주기 규칙에 대한 자세한 내용은 [수명 주기 작업을 설명할 요소](intro-lifecycle-rules.md#intro-lifecycle-rules-actions)를 참조하세요.

1. 이전 객체 버전을 영구적으로 삭제하려면 **이전 객체 버전 영구 삭제(Permanently delete noncurrent versions of objects)** 아래의 **객체가 이전 버전이 된 후 일수(Days after objects become noncurrent)**에 일수를 입력합니다. **Number of newer versions to retain**(유지할 새 버전 수) 아래에 값을 입력하여 유지할 최신 버전 수를 선택적으로 지정할 수 있습니다.

1. **만료된 삭제 마커 또는 불완전한 멀티파트 업로드 삭제(Delete expired delete markers or incomplete multipart uploads)**에서 **만료된 객체 삭제 마커 삭제(Delete expired object delete markers)** 및 **불완전한 멀티파트 업로드 삭제(Delete incomplete multipart uploads)**를 선택합니다. 그런 다음 멀티파트 업로드 시작일 이후 불완전한 멀티파트 업로드를 종료하고 정리하고자 하는 일수를 입력합니다.

   멀티파트 업로드에 대한 자세한 내용은 [Amazon S3에서 멀티파트 업로드를 사용한 객체 업로드 및 복사](mpuoverview.md) 섹션을 참조하세요.

1. [**Create rule**]을 선택합니다.

   규칙에 아무런 오류가 없는 경우 Amazon S3에서 이를 사용 설정하고, 이 규칙은 **수명 주기 규칙(Lifecycle rules)**의 **관리(Management)** 탭에서 확인할 수 있습니다.

### AWS CLI 사용
<a name="set-lifecycle-cli"></a>

다음 AWS CLI 명령을 사용하여 S3 수명 주기 구성을 관리할 수 있습니다.
+ `put-bucket-lifecycle-configuration`
+ `get-bucket-lifecycle-configuration`
+ `delete-bucket-lifecycle`

AWS CLI 설정에 대한 지침은 **Amazon S3 API 참조의 [AWS CLI를 사용하여 Amazon S3에서 개발](https://docs.aws.amazon.com/AmazonS3/latest/API/setup-aws-cli.html)을 참조하세요.

Amazon S3 수명 주기 구성은 XML 파일입니다. 그러나 AWS CLI를 사용할 때는 XML 형식을 지정할 수 없으며 대신 JSON 형식을 지정해야 합니다. 다음은 XML 수명 주기 구성과 AWS CLI 명령에서 지정할 수 있는 그에 상응하는 JSON 구성의 예시입니다.

다음 예제 S3 수명 주기 구성을 살펴보세요.

**Example 예 1**  

**Example**  

```
<LifecycleConfiguration>
    <Rule>
        <ID>ExampleRule</ID>
        <Filter>
           <Prefix>documents/</Prefix>
        </Filter>
        <Status>Enabled</Status>
        <Transition>        
           <Days>365</Days>        
           <StorageClass>GLACIER</StorageClass>
        </Transition>    
        <Expiration>
             <Days>3650</Days>
        </Expiration>
    </Rule>
</LifecycleConfiguration>
```

```
{
    "Rules": [
        {
            "Filter": {
                "Prefix": "documents/"
            },
            "Status": "Enabled",
            "Transitions": [
                {
                    "Days": 365,
                    "StorageClass": "GLACIER"
                }
            ],
            "Expiration": {
                "Days": 3650
            },
            "ID": "ExampleRule"
        }
    ]
}
```

**Example 예 2**  

**Example**  

```
<LifecycleConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <Rule>
        <ID>id-1</ID>
        <Expiration>
            <Days>1</Days>
        </Expiration>
        <Filter>
            <And>
                <Prefix>myprefix</Prefix>
                <Tag>
                    <Key>mytagkey1</Key>
                    <Value>mytagvalue1</Value>
                </Tag>
                <Tag>
                    <Key>mytagkey2</Key>
                    <Value>mytagvalue2</Value>
                </Tag>
            </And>
        </Filter>
        <Status>Enabled</Status>    
    </Rule>
</LifecycleConfiguration>
```

```
{
    "Rules": [
        {
            "ID": "id-1",
            "Filter": {
                "And": {
                    "Prefix": "myprefix", 
                    "Tags": [
                        {
                            "Value": "mytagvalue1", 
                            "Key": "mytagkey1"
                        }, 
                        {
                            "Value": "mytagvalue2", 
                            "Key": "mytagkey2"
                        }
                    ]
                }
            }, 
            "Status": "Enabled", 
            "Expiration": {
                "Days": 1
            }
        }
    ]
}
```

다음과 같이 `put-bucket-lifecycle-configuration`을 테스트할 수 있습니다.

**구성 테스트**

1. 파일(예: *`lifecycle.json`*)에 JSON 수명 주기 구성을 저장합니다.

1. 다음 AWS CLI 명령을 실행하여 버킷에서 수명 주기 구성을 설정합니다. `user input placeholders`를 사용자의 정보로 대체합니다.

   ```
   $ aws s3api put-bucket-lifecycle-configuration  \
   --bucket amzn-s3-demo-bucket  \
   --lifecycle-configuration file://lifecycle.json
   ```

1. 확인하려면 다음과 같이 `get-bucket-lifecycle-configuration` AWS CLI 명령을 사용해 S3 수명 주기 구성을 검색합니다.

   ```
   $ aws s3api get-bucket-lifecycle-configuration  \
   --bucket amzn-s3-demo-bucket
   ```

1. S3 수명 주기 구성을 삭제하려면 다음과 같이 `delete-bucket-lifecycle` AWS CLI 명령을 사용합니다.

   ```
   aws s3api delete-bucket-lifecycle \
   --bucket amzn-s3-demo-bucket
   ```

### AWS SDK 사용
<a name="manage-lifecycle-using-sdk"></a>

------
#### [ Java ]

Java용 AWS SDK를 사용하여 버킷의 S3 수명 주기 구성을 관리할 수 있습니다. S3 수명 주기 구성 관리에 대한 자세한 내용은 [객체 수명 주기 관리](object-lifecycle-mgmt.md) 섹션을 참조하세요.

**참고**  
버킷에 S3 수명 주기 구성을 추가하면 Amazon S3가 버킷의 현재 수명 주기 구성(있는 경우)을 대체합니다. 구성을 업데이트하려면 검색한 후 원하는 대로 변경한 다음 수정한 구성을 버킷에 추가합니다.

AWS SDK for Java를 사용하여 수명 주기 구성을 관리하려면 다음을 할 수 있습니다.
+ 버킷에 수명 주기 구성 추가
+ 수명 주기 구성을 검색하고 다른 규칙을 추가하여 업데이트합니다.
+ 버킷에 수정된 수명 주기 구성을 추가합니다. Amazon S3에서는 기존 구성을 대체합니다.
+ 구성을 다시 검색한 다음 규칙 수를 출력하여 규칙 개수가 올바른지 확인합니다.
+ 수명 주기 구성을 삭제한 다음 다시 검색을 시도하여 삭제되었는지 확인합니다.

AWS SDK for Java를 사용하여 버킷에 수명 주기 구성을 설정하는 방법의 예는 *Amazon S3 API 참조*의 [Set lifecycle configuration on a bucket](https://docs.aws.amazon.com/AmazonS3/latest/API/s3_example_s3_PutBucketLifecycleConfiguration_section.html)을 참조하세요.

------
#### [ .NET ]

AWS SDK for .NET을 사용하여 버킷에서 S3 수명 주기 구성을 관리할 수 있습니다. 수명 주기 구성 관리에 대한 자세한 내용은 [객체 수명 주기 관리](object-lifecycle-mgmt.md) 섹션을 참조하세요.

**참고**  
수명 주기 구성을 추가하면 Amazon S3이 지정된 버킷에서 기존 구성을 대체합니다. 구성을 업데이트하려면 먼저 수명 주기 구성을 검색하여 변경한 후, 수정한 수명 주기 구성을 버킷에 추가해야 합니다.

다음 예제는 AWS SDK for .NET를 사용하여 버킷의 수명 주기 구성을 추가, 업데이트 및 삭제하는 방법을 보여줍니다. 이 코드 예제에서는 다음 작업을 수행합니다.
+ 버킷에 수명 주기 구성을 추가합니다.
+ 수명 주기 구성을 검색하고 다른 규칙을 추가하여 구성을 업데이트합니다.
+ 버킷에 수정된 수명 주기 구성을 추가합니다. Amazon S3에서는 기존 수명 주기 구성을 대체합니다.
+ 구성을 다시 검색한 다음 구성의 규칙 수를 인쇄하여 구성을 확인합니다.
+ 수명 주기 구성을 삭제하고 삭제되었는지 확인합니다.

코드 예제 설정 및 실행에 대한 자세한 내용은 **AWS SDK for .NET 개발자 안내서의 [AWS SDK for .NET 시작하기](https://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/net-dg-config.html)를 참조하세요.

```
using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace Amazon.DocSamples.S3
{
    class LifecycleTest
    {
        private const string bucketName = "*** bucket name ***";
        // Specify your bucket region (an example region is shown).
        private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
        private static IAmazonS3 client;
        public static void Main()
        {
            client = new AmazonS3Client(bucketRegion);
            AddUpdateDeleteLifecycleConfigAsync().Wait();
        }

        private static async Task AddUpdateDeleteLifecycleConfigAsync()
        {
            try
            {
                var lifeCycleConfiguration = new LifecycleConfiguration()
                {
                    Rules = new List<LifecycleRule>
                        {
                            new LifecycleRule
                            {
                                 Id = "Archive immediately rule",
                                 Filter = new LifecycleFilter()
                                 {
                                     LifecycleFilterPredicate = new LifecyclePrefixPredicate()
                                     {
                                         Prefix = "glacierobjects/"
                                     }
                                 },
                                 Status = LifecycleRuleStatus.Enabled,
                                 Transitions = new List<LifecycleTransition>
                                 {
                                      new LifecycleTransition
                                      {
                                           Days = 0,
                                           StorageClass = S3StorageClass.Glacier
                                      }
                                  },
                            },
                            new LifecycleRule
                            {
                                 Id = "Archive and then delete rule",
                                  Filter = new LifecycleFilter()
                                 {
                                     LifecycleFilterPredicate = new LifecyclePrefixPredicate()
                                     {
                                         Prefix = "projectdocs/"
                                     }
                                 },
                                 Status = LifecycleRuleStatus.Enabled,
                                 Transitions = new List<LifecycleTransition>
                                 {
                                      new LifecycleTransition
                                      {
                                           Days = 30,
                                           StorageClass = S3StorageClass.StandardInfrequentAccess
                                      },
                                      new LifecycleTransition
                                      {
                                        Days = 365,
                                        StorageClass = S3StorageClass.Glacier
                                      }
                                 },
                                 Expiration = new LifecycleRuleExpiration()
                                 {
                                       Days = 3650
                                 }
                            }
                        }
                };

                // Add the configuration to the bucket. 
                await AddExampleLifecycleConfigAsync(client, lifeCycleConfiguration);

                // Retrieve an existing configuration. 
                lifeCycleConfiguration = await RetrieveLifecycleConfigAsync(client);

                // Add a new rule.
                lifeCycleConfiguration.Rules.Add(new LifecycleRule
                {
                    Id = "NewRule",
                    Filter = new LifecycleFilter()
                    {
                        LifecycleFilterPredicate = new LifecyclePrefixPredicate()
                        {
                            Prefix = "YearlyDocuments/"
                        }
                    },
                    Expiration = new LifecycleRuleExpiration()
                    {
                        Days = 3650
                    }
                });

                // Add the configuration to the bucket. 
                await AddExampleLifecycleConfigAsync(client, lifeCycleConfiguration);

                // Verify that there are now three rules.
                lifeCycleConfiguration = await RetrieveLifecycleConfigAsync(client);
                Console.WriteLine("Expected # of rulest=3; found:{0}", lifeCycleConfiguration.Rules.Count);

                // Delete the configuration.
                await RemoveLifecycleConfigAsync(client);

                // Retrieve a nonexistent configuration.
                lifeCycleConfiguration = await RetrieveLifecycleConfigAsync(client);

            }
            catch (AmazonS3Exception e)
            {
                Console.WriteLine("Error encountered ***. Message:'{0}' when writing an object", e.Message);
            }
            catch (Exception e)
            {
                Console.WriteLine("Unknown encountered on server. Message:'{0}' when writing an object", e.Message);
            }
        }

        static async Task AddExampleLifecycleConfigAsync(IAmazonS3 client, LifecycleConfiguration configuration)
        {

            PutLifecycleConfigurationRequest request = new PutLifecycleConfigurationRequest
            {
                BucketName = bucketName,
                Configuration = configuration
            };
            var response = await client.PutLifecycleConfigurationAsync(request);
        }

        static async Task<LifecycleConfiguration> RetrieveLifecycleConfigAsync(IAmazonS3 client)
        {
            GetLifecycleConfigurationRequest request = new GetLifecycleConfigurationRequest
            {
                BucketName = bucketName
            };
            var response = await client.GetLifecycleConfigurationAsync(request);
            var configuration = response.Configuration;
            return configuration;
        }

        static async Task RemoveLifecycleConfigAsync(IAmazonS3 client)
        {
            DeleteLifecycleConfigurationRequest request = new DeleteLifecycleConfigurationRequest
            {
                BucketName = bucketName
            };
            await client.DeleteLifecycleConfigurationAsync(request);
        }
    }
}
```

------
#### [ Ruby ]

[https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/S3/BucketLifecycle.html](https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/S3/BucketLifecycle.html) 클래스를 통해 AWS SDK for Ruby을 사용하여 버킷에서 S3 수명 주기 구성을 관리할 수 있습니다. S3 수명 주기 구성 관리에 대한 자세한 내용은 [객체 수명 주기 관리](object-lifecycle-mgmt.md) 섹션을 참조하세요.

------

### REST API 사용
<a name="manage-lifecycle-using-rest"></a>

**Amazon Simple Storage Service API 참조의 다음 주제에서는 S3 수명 주기 구성과 관련된 REST API 작업을 설명합니다.
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLifecycleConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLifecycleConfiguration.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketLifecycle.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketLifecycle.html)

## S3 수명 주기 문제 해결
<a name="lifecycle-troubleshoot"></a>

S3 수명 주기 작업 시 발생할 수 있는 일반적인 문제는 [Amazon S3 수명 주기 문제 해결](troubleshoot-lifecycle.md) 섹션을 참조하세요.

# S3 수명 주기가 다른 버킷 구성과 상호 작용하는 방식
<a name="lifecycle-and-other-bucket-config"></a>

S3 수명 주기 구성 외에 다른 구성도 버킷에 연결할 수 있습니다. 이 섹션에서는 S3 수명 주기 구성과 다른 버킷 구성과의 관계를 설명합니다.

## S3 수명 주기 및 S3 버전 관리
<a name="lifecycle-versioning-support-intro"></a>

버전이 지정되지 않은 버킷과 버전 관리가 사용 설정된 버킷에 S3 수명 주기 구성을 추가할 수 있습니다. 자세한 내용은 [S3 버전 관리로 여러 버전의 객체 유지](Versioning.md) 섹션을 참조하세요.

버전 관리가 사용 설정된 버킷은 하나의 현재 객체 버전과 0개 이상의 최신이 아닌 객체 버전을 유지합니다. 최신 버전과 최신이 아닌 객체 버전에 대해 별도의 수명 주기 규칙을 정의할 수 있습니다.

자세한 내용은 [수명 주기 구성의 요소](intro-lifecycle-rules.md) 섹션을 참조하세요.

**중요**  
S3 수명 주기 구성에 규칙이 여러 개인 경우 객체는 같은 날에 여러 가지 S3 수명 주기 작업을 수행할 수 있습니다. 이러한 경우 Amazon S3은 다음과 같은 일반 규칙을 따릅니다.  
영구 삭제는 전환에 우선합니다.
이전은 [삭제 마커](DeleteMarker.md) 생성에 우선합니다.
객체에서 S3 Glacier Flexible Retrieval 및 S3 Standard-IA(또는 S3 One Zone-IA) 전환을 모두 사용할 수 있는 경우 Amazon S3가 S3 Glacier 전환을 선택합니다.
 예시는 [중복 필터 및 충돌하는 수명 주기 작업의 예제](lifecycle-conflicts.md#lifecycle-config-conceptual-ex5) 섹션을 참조하세요.

## MFA 활성화 버킷에 대한 S3 수명 주기 구성
<a name="lifecycle-general-considerations-mfa-enabled-bucket"></a>

MFA가 구성된 다중 인증 버킷에 대한 S3 수명 주기 구성은 지원되지 않습니다. 자세한 내용은 [MFA Delete 구성](MultiFactorAuthenticationDelete.md) 섹션을 참조하세요.

## S3 수명 주기 및 로깅
<a name="lifecycle-general-considerations-logging"></a>

Amazon S3 수명 주기 작업은 AWS CloudTrail 객체 수준 로깅에서 캡처되지 않습니다. CloudTrail은 외부 Amazon S3 엔드포인트에 대한 API 요청을 캡처하는 반면, S3 수명 주기 작업은 내부 Amazon S3 엔드포인트를 사용하여 수행됩니다.

S3 버킷의 Amazon S3 서버 액세스 로그를 활성화하여 다른 스토리지 클래스로의 객체 이전 및 영구 삭제 또는 논리적 삭제를 초래하는 객체 만료와 같은 S3 수명 주기 관련 작업을 캡처할 수 있습니다. 자세한 내용은 [서버 액세스 로깅을 사용한 요청 로깅](ServerLogs.md) 섹션을 참조하세요.

버킷에서 로깅을 사용 설정한 경우 Amazon S3 서버 액세스 로그가 다음 작업의 결과를 보고합니다.


| 작업 로그 | 설명 | 
| --- | --- | 
|  `S3.EXPIRE.OBJECT`  |  Amazon S3는 수명 주기 `Expiration` 작업으로 인해 객체를 영구적으로 삭제합니다.  | 
|  `S3.CREATE.DELETEMARKER`  |  Amazon S3는 버전 관리 활성화 버킷에 삭제 마커를 추가하여 현재 버전을 논리적으로 삭제합니다.  | 
|  `S3.TRANSITION_SIA.OBJECT`  |  Amazon S3이 S3 Standard-IA 스토리지 클래스로 객체를 전환합니다.  | 
|  `S3.TRANSITION_ZIA.OBJECT`  |  Amazon S3이 S3 One Zone-IA 스토리지 클래스로 객체를 전환합니다.  | 
|  `S3.TRANSITION_INT.OBJECT`  |  Amazon S3가 S3 Intelligent-Tiering 스토리지 클래스로 객체를 전환합니다.  | 
|  `S3.TRANSITION_GIR.OBJECT`  |  Amazon S3가 S3 Glacier Instant Retrieval 스토리지 클래스로 객체 전환을 시작합니다.  | 
|  `S3.TRANSITION.OBJECT`  |  Amazon S3가 S3 Glacier Flexible Retrieval 스토리지 클래스로 객체 전환을 시작합니다.  | 
|  `S3.TRANSITION_GDA.OBJECT`  |  Amazon S3가 S3 Glacier Deep Archive 스토리지 클래스로 객체 전환을 시작합니다.  | 
|  `S3.DELETE.UPLOAD`  |  Amazon S3가 불완전한 멀티파트 업로드를 중단합니다.  | 

**참고**  
Amazon S3 서버 액세스 로그 레코드는 최대한 전달되며, 모든 Amazon S3 요청의 완벽한 기록에 사용할 수는 없습니다.

# S3 수명 주기 이벤트 알림 구성
<a name="lifecycle-configure-notification"></a>

S3 수명 주기 규칙에 따라 Amazon S3가 객체를 삭제하거나 다른 Amazon S3 스토리지 클래스로 이전할 때 알림을 받으려면 Amazon S3 이벤트 알림을 설정하면 됩니다.

다음과 같은 S3 수명 주기 이벤트에 대한 알림을 받을 수 있습니다.
+ **이전 이벤트** – `s3:LifecycleTransition` 이벤트 유형을 사용하면 S3 수명 주기 구성에 의해 객체가 Amazon S3 스토리지 클래스 간에 이전될 때 알림을 받을 수 있습니다.
+ **만료(삭제) 이벤트** - `LifecycleExpiration` 이벤트 유형을 사용하면 Amazon S3가 S3 수명 주기 구성에 따라 객체를 삭제할 때마다 알림을 받을 수 있습니다.

  만료 이벤트 유형에는 2가지가 있습니다.
  + `s3:LifecycleExpiration:Delete` 이벤트 유형은 버전이 지정되지 않은 버킷의 객체가 삭제될 때 알려줍니다. `s3:LifecycleExpiration:Delete`에서는 S3 수명 주기 구성으로 인해 객체 버전이 영구적으로 삭제될 때도 알려줍니다.
  +  `s3:LifecycleExpiration:DeleteMarkerCreated` 이벤트 유형은 버전이 지정된 버킷에 있는 객체의 현재 버전이 삭제된 후 S3 수명 주기가 삭제 마커를 생성할 때 알려줍니다. S3 수명 주기는 삭제 마커의 생성 시간을 현재 날짜의 00:00 UTC(자정)로 설정합니다. 이 생성 시간은 S3가 보내는 `s3:LifecycleExpiration:DeleteMarkerCreated` 알림의 이벤트 시간과 다를 수 있습니다. 자세한 내용은 [버전 관리가 사용 설정된 버킷에서 객체 버전 삭제](DeletingObjectVersions.md) 섹션을 참조하세요.

Amazon S3는 Amazon Simple Notification Service(Amazon SNS) 주제, Amazon Simple Queue Service(Amazon SQS) 대기열 또는 AWS Lambda 함수에 이벤트 알림을 게시할 수 있습니다. 자세한 내용은 [Amazon S3 이벤트 알림](EventNotifications.md) 섹션을 참조하세요.

Amazon S3 이벤트 알림을 구성하는 방법에 대한 지침은 [Amazon SQS, Amazon SNS 및 AWS Lambda를 사용한 이벤트 알림 활성화](how-to-enable-disable-notification-intro.md)를 참조하세요.

다음은 Amazon S3에서 `s3:LifecycleExpiration:Delete` 이벤트를 게시하기 위해 전송하는 메시지의 예입니다. 자세한 내용은 [이벤트 메시지 구조](notification-content-structure.md) 섹션을 참조하세요.

```
 1. {  
 2.    "Records":[  
 3.       {  
 4.          "eventVersion":"2.3",
 5.          "eventSource":"aws:s3",
 6.          "awsRegion":"us-west-2",
 7.          "eventTime":"1970-01-01T00:00:00.000Z",
 8.          "eventName":"LifecycleExpiration:Delete",
 9.          "userIdentity":{  
10.             "principalId":"s3.amazonaws.com"
11.          },
12.          "requestParameters":{  
13.             "sourceIPAddress":"s3.amazonaws.com"
14.          },
15.          "responseElements":{  
16.             "x-amz-request-id":"C3D13FE58DE4C810",
17.             "x-amz-id-2":"FMyUVURIY8/IgAtTv8xRjskZQpcIZ9KG4V5Wp6S7S/JRWeUWerMUE5JgHvANOjpD"
18.          },
19.          "s3":{  
20.             "s3SchemaVersion":"1.0",
21.             "configurationId":"testConfigRule",
22.             "bucket":{  
23.                "name":"amzn-s3-demo-bucket",
24.                "ownerIdentity":{  
25.                   "principalId":"A3NL1KOZZKExample"
26.                },
27.                "arn":"arn:aws:s3:::amzn-s3-demo-bucket"
28.             },
29.             "object":{  
30.                "key":"expiration/delete",
31.                "sequencer":"0055AED6DCD90281E5",              
32.             }
33.          }
34.       }
35.    ]
36. }
```

Amazon S3가 `s3:LifecycleTransition` 이벤트를 게시하기 위해 전송하는 메시지에는 다음 정보도 포함됩니다.

```
1. "lifecycleEventData":{
2.     "transitionEventData": {
3.         "destinationStorageClass": the destination storage class for the object
4.     }
5. }
```

# 수명 주기 구성의 요소
<a name="intro-lifecycle-rules"></a>

S3 수명 주기 구성은 Amazon S3가 객체 수명 주기 동안 수행하는 작업을 설명하는 다양한 요소를 포함하는 수명 주기 규칙으로 구성됩니다. 각 S3 버킷에는 최대 1,000개의 규칙을 포함할 수 있는 하나의 수명 주기 구성이 할당될 수 있습니다. Amazon S3 수명 주기 구성을 하나 이상의 수명 주기 규칙으로 구성된 XML로 지정합니다. 이때 각 규칙은 하나 이상의 요소로 이루어집니다.

```
<LifecycleConfiguration>
    <Rule>
         <Element>
    </Rule>
    <Rule>
         <Element>
         <Element>
    </Rule>
</LifecycleConfiguration>
```

각 규칙은 다음과 같은 요소로 구성됩니다.
+ 규칙 메타데이터에는 규칙 ID와 규칙의 활성화 여부를 나타내는 상태가 포함됩니다. 규칙이 사용 중지되면 Amazon S3은 규칙에 지정된 작업을 수행하지 않습니다.
+ 규칙이 적용되는 객체를 식별하는 필터. 객체 크기, 객체 키 접두사, 하나 이상의 객체 태그 또는 필터 조합을 사용하여 필터를 지정할 수 있습니다.
+ Amazon S3이 객체 수명 주기의 특정 날짜 또는 기간 동안 지정된 작업을 수행하기를 원하는 하나 이상의 전환 또는 만료 작업 

**Topics**
+ [ID 요소](#intro-lifecycle-rule-id)
+ [상태 요소](#intro-lifecycle-rule-status)
+ [필터 요소](#intro-lifecycle-rules-filter)
+ [수명 주기 작업을 설명할 요소](#intro-lifecycle-rules-actions)
+ [수명 주기 규칙에 필터 추가](intro-lifecycle-filters.md)

다음 섹션에서는 S3 수명 주기 구성의 XML 요소에 대해 설명합니다. 구성에 대한 예시는 [S3 수명 주기 구성의 예제](lifecycle-configuration-examples.md) 섹션을 참조하십시오.

## ID 요소
<a name="intro-lifecycle-rule-id"></a>

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

## 상태 요소
<a name="intro-lifecycle-rule-status"></a>

이때 `<Status>` 요소 값은 `Enabled` 또는 `Disabled`가 될 수 있습니다. 규칙이 사용 중지되면 Amazon S3은 규칙에 정의된 작업을 수행하지 않습니다.

## 필터 요소
<a name="intro-lifecycle-rules-filter"></a>

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

키 접두사, 객체 태그 또는 이 둘의 조합으로 객체를 필터링할 수 있습니다. 조합하는 경우 Amazon S3가 논리적 `AND`를 사용하여 필터를 조합합니다. 필터에 대한 예제 및 자세한 정보는 [수명 주기 규칙에 필터 추가](intro-lifecycle-filters.md) 섹션을 참조하세요.
+ **키 접두사를 사용하여 필터 지정** – 이 예시는 키 이름 접두사(`logs/`)에 기반하여 객체의 하위 집합에 적용되는 S3 수명 주기 규칙을 보여 줍니다. 예를 들어, 이 수명 주기 규칙은 객체 `logs/mylog.txt`, `logs/temp1.txt` 및 `logs/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>
  ```

  객체 키에 대한 자세한 내용은 [Amazon S3 객체 이름 지정](object-keys.md) 섹션을 참조하십시오.
+ **객체 태그에 기반한 필터 지정** - 다음 예시에서 수명 주기 규칙은 태그(`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`를 수행합니다. 다음 사항에 유의하세요.
  + 각 태그는 키 및 값 **모두와 정확히 일치해야 합니다. `<Key>` 요소만 지정하고 `<Value>` 요소는 지정하지 않는 경우, 규칙은 태그 키와 일치하고 값이 지정되지 **않은 객체에만 적용됩니다.
  + 이 규칙은 규칙에 모든 태그가 지정되는 객체의 하위 집합에 적용됩니다. 객체에 추가 태그가 지정되어 있더라도 규칙은 계속 적용됩니다.
**참고**  
필터에서 복수의 태그를 지정할 경우, 각각의 태그 키가 고유해야 합니다.
+ **접두사와 하나 이상의 태그에 기반한 필터 지정** - 수명 주기 규칙에서 키 접두사 및 하나 이상의 태그에 기반하여 필터를 지정할 수 있습니다. 이 경우에도 아래와 같이 이 모든 필터 요소를 `<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개 이상의 태그를 가질 수 있습니다.
+ **빈 필터(empty filter)**를 지정할 수도 있는데, 이 경우에 규칙은 버킷 내 모든 객체에 적용됩니다.

  ```
  <LifecycleConfiguration>
      <Rule>
          <Filter>
          </Filter>
          <Status>Enabled</Status>
          transition/expiration actions
      </Rule>
  </LifecycleConfiguration>
  ```
+ **객체 크기(object size)**별로 규칙을 필터링하려면 최소 크기(`ObjectSizeGreaterThan`) 또는 최대 크기(`ObjectSizeLessThan`)를 지정하거나 객체 크기 범위를 지정할 수 있습니다.

  객체 크기 값은 바이트 단위입니다. 기본적으로 128KB 미만의 객체는 최소 크기(`ObjectSizeGreaterThan`) 또는 최대 크기(`ObjectSizeLessThan`)를 더 작게 지정하지 않는 한 스토리지 클래스로 전환되지 않습니다. 자세한 내용은 [예제: 128KB 미만의 객체 전환 허용](lifecycle-configuration-examples.md#lc-small-objects) 섹션을 참조하세요.

  ```
                      <LifecycleConfiguration>
      <Rule>
          <Filter>
              <ObjectSizeGreaterThan>500</ObjectSizeGreaterThan>   
          </Filter>
          <Status>Enabled</Status>
          transition/expiration actions
      </Rule>
  </LifecycleConfiguration>
  ```
**참고**  
`ObjectSizeGreaterThan` 및 `ObjectSizeLessThan` 필터는 지정된 값을 제외합니다. 예를 들어 128KB에서 1024KB로 객체를 설정하여 S3 Standard 스토리지 클래스에서 S3 Standard-IA 스토리지 클래스로 이동할 때 크기가 정확히 1024KB와 128KB인 객체는 S3 Standard-IA로 이전되지 않습니다. 대신 규칙은 크기가 128KB보다 크고 1024KB 미만인 객체에만 적용됩니다.

  객체 크기 범위를 지정하는 경우 `ObjectSizeGreaterThan` 정수는 `ObjectSizeLessThan` 값보다 작아야 합니다. 둘 이상의 필터를 사용하는 경우 `<And>` 요소로 필터를 묶어야 합니다. 다음 예에서는 500\$164,000바이트 범위의 객체를 지정하는 방법을 보여 줍니다.

  ```
  <LifecycleConfiguration>
      <Rule>
          <Filter>
              <And>
                  <Prefix>key-prefix</Prefix>
                  <ObjectSizeGreaterThan>500</ObjectSizeGreaterThan>
                  <ObjectSizeLessThan>64000</ObjectSizeLessThan>
              </And>    
          </Filter>
          <Status>Enabled</Status>
          transition/expiration actions
      </Rule>
  </LifecycleConfiguration>
  ```

## 수명 주기 작업을 설명할 요소
<a name="intro-lifecycle-rules-actions"></a>

S3 수명 주기 규칙에 사전 정의된 다음 작업 중 하나 이상을 지정하여 객체의 수명 주기에 따라 Amazon S3이 특정 작업을 수행하도록 지시할 수 있습니다. 이러한 작업의 효과는 버킷의 버전 관리 상태에 따라 달라집니다.
+ **`Transition` 작업 요소** – 한 스토리지 클래스에서 다른 스토리지 클래스로 객체를 전환하려면 `Transition` 작업을 지정합니다. 객체 전환에 대한 자세한 내용은 [Supported transitions](lifecycle-transition-general-considerations.md#lifecycle-general-considerations-transition-sc) 섹션을 참조하십시오. 객체의 수명 주기에서 지정된 날짜 또는 기간이 도래하면 Amazon S3이 전환을 수행합니다.

  버전이 지정된 버킷(버전 관리를 사용하거나 버전 관리가 일시 중지된 버킷)의 경우 `Transition` 작업은 현재 객체 버전에 적용됩니다. 최신이 아닌 버전을 관리하기 위해 Amazon S3에서는 `NoncurrentVersionTransition` 작업을 정의합니다(이 주제의 뒷부분에서 설명).
+ **`Expiration` 작업 요소** - `Expiration` 작업은 규칙에서 식별된 객체를 만료시키고 모든 Amazon S3 스토리지 클래스의 적격 객체에 적용됩니다. 스토리지 클래스에 대한 자세한 정보는 [Amazon S3 스토리지 클래스 이해 및 관리](storage-class-intro.md)를 참조하십시오. Amazon S3에 의해 만료된 모든 객체는 사용할 수 없게 되고, 버킷의 버전 관리 상태에 따라 객체의 영구 삭제 여부가 결정됩니다.
  + **버전이 지정되지 않은 버킷** - `Expiration` 작업을 수행하면 Amazon S3가 객체를 영구적으로 제거합니다.
  + **버전이 지정된 버킷** - 버전이 지정된 버킷(즉, 버전 관리를 사용하거나 버전 관리가 일시 중지된 버킷)의 경우, Amazon S3이 `Expiration` 작업을 처리하는 방식에 대한 몇 가지 고려 사항이 있습니다. 버전 관리가 활성화되거나 버전 관리가 일시 중지된 버킷에는 다음이 적용됩니다.
    + `Expiration` 작업은 최신 버전에만 적용됩니다(비 최신 버전에는 영향이 없음).
    + 객체 버전이 1개 이상이고 삭제 마커가 최신 버전이면 Amazon S3은 작업을 수행하지 않습니다.
    + 최신 객체 버전이 유일한 객체 버전이면서 삭제 마커인 경우(*만료된 객체 삭제 마커*라고도 하는데, 이 경우 모든 객체 버전이 삭제되고 하나의 삭제 마커만 남게 됨), Amazon S3은 만료된 객체 삭제 마커를 제거합니다. 만료 행위를 사용하여 Amazon S3에게 만료된 객체 삭제 마커를 제거하도록 지시할 수도 있습니다. 관련 예제는 [버전 관리를 사용하는 버킷에서 만료된 객체 삭제 마커 제거](lifecycle-configuration-examples.md#lifecycle-config-conceptual-ex7) 섹션을 참조하십시오 

    자세한 내용은 [S3 버전 관리로 여러 버전의 객체 유지](Versioning.md) 섹션을 참조하십시오.

    Amazon S3을 설정하여 만료를 관리할 때는 다음 사항도 고려하십시오.
    + **버전 관리를 사용하는 버킷** 

      최신 객체 버전이 삭제 마커가 아닌 경우 Amazon S3은 고유한 버전 ID를 갖는 삭제 마커를 추가합니다. 이를 통해 최신 버전이 최신이 아닌 버전이 되고 삭제 마커가 최신 버전이 됩니다.
    + **버전 관리가 일시 중지된 버킷** 

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

또한 Amazon S3에서는 버전이 지정된 버킷(즉, 버전 관리를 사용하거나 버전 관리가 일시 중지된 버킷)에서 최신이 아닌 객체 버전을 관리하는 데 사용할 수 있는 다음 작업을 제공합니다.
+ **`NoncurrentVersionTransition` 작업 요소** – 이 작업을 사용하여 언제 Amazon S3에서 객체를 지정된 스토리지 클래스로 전환할지 지정합니다. 이 전환은 객체가 비최신(`<NoncurrentDays>`) 상태가 된 시점부터 특정 일수를 기준으로 할 수 있습니다. 일수 외에도 유지할 비최신 버전(`<NewerNoncurrentVersions>`)의 개수를 지정할 수 있습니다(1\$1100개). 이 값은 Amazon S3가 특정 버전을 전환하기 전에 얼마나 많은 새로운 비최신 버전이 있어야 하는지를 판단합니다. Amazon S3는 보존하도록 지정된 수를 초과하는 모든 추가 비최신 버전을 전환합니다. 전환을 수행하려면 `<NoncurrentDays>` **및** `<NewerNoncurrentVersions>` 값을 모두 초과해야 합니다.

  유지할 비최신 버전의 개수를 지정하려면 `<Filter>` 요소 또한 제공해야 합니다. `<Filter>` 요소를 지정하지 않은 상태로 유지할 비최신 버전의 수를 지정하는 경우 Amazon S3에서 `InvalidRequest` 오류가 발생합니다.

  객체 전환에 대한 자세한 내용은 [Supported transitions](lifecycle-transition-general-considerations.md#lifecycle-general-considerations-transition-sc) 섹션을 참조하십시오. `NoncurrentVersionTransition` 작업에서 일 수를 지정할 때 Amazon S3가 날짜를 계산하는 방법에 대한 자세한 내용은 [수명 주기 규칙: 객체 기간 기반](#intro-lifecycle-rules-number-of-days) 섹션을 참조하십시오.
+ **`NoncurrentVersionExpiration` 작업 요소** – 이 작업을 사용하여 Amazon S3가 비최신 객체 버전을 영구적으로 삭제하도록 지시합니다. 이러한 삭제된 객체는 복구할 수 없습니다. 이 만료는 객체가 비최신(`<NoncurrentDays>`) 상태가 된 시점부터 특정 일수를 기준으로 할 수 있습니다. 일수 외에도 유지할 비최신 버전(`<NewerNoncurrentVersions>`)의 개수를 지정할 수 있습니다(1\$1100개). 이 값은 Amazon S3가 특정 버전을 만료하기 전에 얼마나 많은 새로운 비최신 버전이 있어야 하는지를 지정합니다. Amazon S3는 보존하도록 지정된 수를 초과하는 모든 추가 비최신 버전을 영구적으로 삭제합니다. 삭제를 수행하려면 `<NoncurrentDays>` **및** `<NewerNoncurrentVersions>` 값을 모두 초과해야 합니다.

  유지할 비최신 버전의 개수를 지정하려면 `<Filter>` 요소 또한 제공해야 합니다. `<Filter>` 요소를 지정하지 않은 상태로 유지할 비최신 버전의 수를 지정하는 경우 Amazon S3에서 `InvalidRequest` 오류가 발생합니다.

  최신 버전이 아닌 객체를 지연 제거하면 실수로 인한 삭제 또는 덮어쓰기로부터 복구해야 하는 경우에 유용합니다. 예를 들어, 비 최신 버전이 되고 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시(UTC)에 만료 수명 주기 규칙이 실행되어 `photo.gif`(버전 ID 111111)를 영구 삭제합니다.

  `NoncurrentVersionExpiration` 작업에서 일 수를 지정할 때 Amazon S3가 날짜를 계산하는 방법에 대한 자세한 내용은 [수명 주기 규칙: 객체 기간 기반](#intro-lifecycle-rules-number-of-days) 섹션을 참조하십시오.
**참고**  
객체 만료 수명 주기 구성은 완료되지 않은 멀티파트 업로드를 제거하지 않습니다. 불완전 멀티파트 업로드업로드를 제거하려면 이 단원 뒷부분에서 설명하는 `AbortIncompleteMultipartUpload` 수명 주기 구성 작업을 사용해야 합니다.

전환 및 만료 작업뿐만 아니라 다음과 같은 수명 주기 구성 작업을 사용함으로써 미완료 멀티파트 업로드를 중지하거나 만료된 객체 삭제 마커를 제거하도록 Amazon S3에 지시할 수 있습니다.
+ **`AbortIncompleteMultipartUpload` 작업 요소** - 이 요소를 사용해 멀티파트 업로드가 진행 상태에 있길 원하는 최대 시간(일수)을 설정합니다. 해당 멀티파트 업로드(수명 주기 규칙에서 지정된 키 이름 `prefix`에 의해 결정)가 사전 지정된 기간 내에 성공적으로 완료되지 않으면, Amazon S3는 불완전 멀티파트 업로드를 중지합니다. 자세한 내용은 [멀티파트 업로드 중단](abort-mpu.md) 섹션을 참조하세요.
**참고**  
객체 태그를 사용하는 필터가 있는 규칙에서는 이 수명 주기 작업을 지정할 수 없습니다.
+ **`ExpiredObjectDeleteMarker` 작업 요소** – 버전 관리가 활성화된 버킷에서 비최신 버전이 없는 삭제 마커는 *만료된 객체 삭제 마커*라고 부릅니다. 이 수명 주기 작업을 사용하여 Amazon S3에 만료된 객체 삭제 마커를 제거하도록 지시할 수 있습니다. 문제 해결 예는 [버전 관리를 사용하는 버킷에서 만료된 객체 삭제 마커 제거](lifecycle-configuration-examples.md#lifecycle-config-conceptual-ex7)을(를) 참조하세요.
**참고**  
객체 태그를 사용하는 필터가 있는 규칙에서는 이 수명 주기 작업을 지정할 수 없습니다.

### Amazon S3이 최신이 아닌 객체 버전이 된 기간을 계산하는 방법
<a name="non-current-days-calculations"></a>

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

**S3 수명 주기 구성을 사용한 이전 버전의 객체 복원**  
[이전 버전 복원](RestoringPreviousVersions.md)의 설명과 같이 다음 두 가지 방법 중 하나를 사용하여 이전 버전의 객체를 검색할 수 있습니다.  
**방법 1 – 비최신 버전의 객체를 동일한 버킷으로 복사합니다.** 복사된 객체는 해당 객체의 최신 버전이 되고 모든 객체 버전은 유지됩니다.
**방법 2 – 객체의 현재 버전을 영구적으로 삭제합니다.** 최신 객체 버전을 삭제하는 것은 실제로 해당 객체의 비 최신 버전을 최신 버전으로 만드는 것과 같습니다.
버전 관리가 활성화된 버킷에 S3 수명 주기 구성 규칙을 사용할 경우 방법 1을 사용하는 것이 모범 사례입니다.  
S3 수명 주기는 최종 일관성 모델로 작동합니다. 영구적으로 삭제한 최신 버전은 변경 사항이 모든 Amazon S3 시스템에 전파될 때까지 사라지지 않을 수 있습니다. (따라서 Amazon S3가 이 삭제를 일시적으로 인식하지 못할 수 있습니다.) 그 동안 최신 버전이 아닌 객체를 만료시키도록 구성된 수명 주기 규칙에 의해 복구하려는 객체를 포함하여 최신 버전이 아닌 객체가 영구 제거될 수 있습니다. 따라서 방법 1에서 권장하는 대로 이전 버전을 복사하는 것이 더 안전합니다.

### 수명 주기 작업 및 버킷의 버전 관리 상태
<a name="lifecycle-actions-bucket-versioning-state"></a>

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


| 작업 | 버전 관리를 사용하지 않는 버킷(버전 관리를 사용 설정하지 않은 경우) | 버전 관리를 사용하는 버킷 | 버전 관리가 일시 중지된 버킷 | 
| --- | --- | --- | --- | 
|  `Transition` 객체의 수명 주기에서 지정된 날짜 또는 기간에 도달하면.  | Amazon S3이 객체를 지정된 스토리지 클래스로 전환합니다. | Amazon S3이 최신 버전의 객체를 지정된 스토리지 클래스로 전환합니다. | 버전 관리를 사용하는 버킷과 동일하게 작동합니다. | 
|  `Expiration` 객체의 수명 주기에서 지정된 날짜 또는 기간에 도달하면.  | Expiration 작업은 객체를 삭제하며, 이렇게 삭제된 객체는 복구할 수 없습니다. | 최신 버전이 삭제 마커가 아닐 경우 Amazon S3는 삭제 마커를 생성하여 최신 버전으로 만들고 기존 최신 버전은 비최신 버전으로 유지합니다. | 수명 주기 작업은 null 버전 ID로 삭제 마커를 생성하여 최신 버전으로 만듭니다. 최신 버전 객체의 버전 ID가 null일 경우 Expiration 작업은 이 버전을 영구 삭제합니다. 그렇지 않으면 최신 버전을 비 최신 버전으로 유지합니다. | 
|  `NoncurrentVersionTransition` 버전 관리가 활성화되거나 버전 관리가 일시 중지된 버킷의 비최신 버전의 경우, S3 수명 주기는 객체가 비최신 상태가 된 후의 일수가 규칙에서 **객체가 비최신 상태가 된 후 일수**(`<NoncurrentDays>`)에 지정된 값을 초과하고 **또한** 버전의 수가 **보존할 최신 버전 수**(`<NewerNoncurrentVersions>`)에 지정된 값을 초과하면 객체를 전환합니다.  | NoncurrentVersionTransition은 아무 영향이 없습니다. |  Amazon S3이 최신이 아닌 객체 버전을 지정된 스토리지 클래스로 전환합니다.  | 버전 관리를 사용하는 버킷과 동일하게 작동합니다. | 
|  `NoncurrentVersionExpiration` 버전 관리가 활성화되거나 버전 관리가 일시 중지된 버킷의 비최신 버전의 경우, S3 수명 주기는 객체가 비최신 상태가 된 후의 일수가 규칙에서 **객체가 비최신 상태가 된 후 일수**(`<NoncurrentDays>`)에 지정된 값을 초과하고 **또한** 버전의 수가 **보존할 최신 버전 수**(`<NewerNoncurrentVersions>`)에 지정된 값을 초과하면 객체를 만료합니다.  | NoncurrentVersionExpiration은 아무 영향이 없습니다. | NoncurrentVersionExpiration 작업은 비최신 버전의 객체를 영구적으로 삭제하며, 이렇게 삭제된 객체는 복구할 수 없습니다. | 버전 관리를 사용하는 버킷과 동일하게 작동합니다. | 

### 수명 주기 규칙: 객체 기간 기반
<a name="intro-lifecycle-rules-number-of-days"></a>

객체 생성 또는 수정 시점을 기준으로 Amazon S3가 지정된 작업을 수행할 수 있는 기간(일수)을 지정할 수 있습니다.

S3 수명 주기 구성에서 `Transition` 및 `Expiration` 작업 일수를 지정할 경우, 다음에 유의하십시오.
+ 지정하는 값은 작업이 이루어질 객체 생성 이후의 일수입니다.
+ Amazon S3는 객체 생성 시간을 기준으로 규칙에 지정된 일수를 계산하며, 익일 자정(UTC)으로 계산된 시간을 상향 조정합니다. 예를 들어, 객체가 2014년 1월 15일 오전 10시 30분에 생성되고, 전환 규칙에 3일을 지정한 경우 객체의 전환일은 2014년 1월 19일 0시가 됩니다.

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

수명 주기 구성에서 `NoncurrentVersionTransition` 및 `NoncurrentVersionExpiration` 작업의 일 수를 지정할 경우 다음에 유의하십시오.
+ 지정하는 값은 Amazon S3가 지정된 객체에 대해 작업을 수행할 기간으로 객체 버전이 비최신이 된 이후의 일수(즉, 객체를 덮어쓰거나 삭제한 후 경과한 일수)입니다.
+ Amazon S3는 후속 버전의 새 객체가 생성된 시간을 기준으로 규칙에 지정된 일수를 계산하며, 익일 자정(UTC)으로 계산된 시간을 상향 조정합니다. 예를 들어 버킷에서 2014년 1월 1일 오전 10시30분(UTC)에 생성된 객체가 현재 버전이라고 가정합시다. 현재 버전을 대체한 새 버전이 2014년 1월 15일 오전 10시 30분(UTC)에 생성되었고 전환 규칙에 3일을 지정했다면, 해당 객체의 전환일은 2014년 1월 19일 0시(UTC)로 계산됩니다.

### 수명 주기 규칙: 지정된 날짜 기반
<a name="intro-lifecycle-rules-date"></a>

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

과거 날짜를 사용하여 S3 수명 주기 작업을 지정할 경우 기준을 충족하는 모든 객체가 즉시 해당 수명 주기 작업의 대상이 됩니다.

**중요**  
날짜 기반 작업은 일회용 작업이 아닙니다. Amazon S3은 날짜가 경과한 이후에도 해당 규칙 상태가 `Enabled`로 유지되는 한 데이터 기반 작업을 계속 적용합니다.  
예를 들어, 날짜 기반 `Expiration` 작업을 지정하여 모든 객체를 삭제한다고 가정해 봅시다(규칙에 지정된 필터가 없는 것으로 가정). 지정된 날짜에 Amazon S3은 버킷 내 모든 객체를 만료시킵니다. 또한 Amazon S3는 사용자가 버킷에서 만드는 새 객체도 모두 만료시킵니다. 수명 주기 작업을 중지하려면 작업을 수명 주기 규칙에서 제거하거나, 규칙을 비활성화하거나, 규칙을 수명 주기 구성에서 삭제해야 합니다.

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

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

# 수명 주기 규칙에 필터 추가
<a name="intro-lifecycle-filters"></a>

필터는 규칙이 적용되는 객체를 지정하는 데 사용할 수 있는 선택적 수명 주기 규칙 요소입니다.

다음 요소를 사용하여 객체를 필터링할 수 있습니다.

**키 접두사**  
접두사를 기준으로 객체를 필터링할 수 있습니다. 다른 접두사를 사용하여 객체의 하위 집합에 수명 주기 작업을 적용하려면 각 작업에 대한 별도의 규칙을 생성합니다.

**객체 태그**  
하나 이상의 태그를 기준으로 객체를 필터링할 수 있습니다. 각 태그는 키와 값이 모두 정확히 일치해야 하며, 복수의 태그를 지정할 경우 각각의 태그 키가 고유해야 합니다. 객체 태그가 여러 개 있는 필터는 지정된 모든 태그가 있는 객체의 하위 집합에 적용됩니다. 객체에 추가 태그가 지정되어 있더라도 필터는 계속 적용됩니다.  
`Key` 요소만 지정하고 `Value` 요소는 지정하지 않는 경우, 규칙은 태그 키와 일치하고 값이 지정되지 않은 객체에만 적용됩니다.

**최소 또는 최대 객체 크기**  
크기를 기준으로 객체를 필터링할 수 있습니다. 최소 크기(`ObjectSizeGreaterThan`) 또는 최대 크기(`ObjectSizeLessThan`)를 지정하거나 동일한 필터에서 객체 크기 범위를 지정할 수 있습니다. 객체 크기 값은 바이트 단위입니다. 최대 필터 크기는 50TB입니다. Amazon S3는 기본 최소 객체 크기를 수명 주기 구성에 적용합니다. 자세한 내용은 [예제: 128KB 미만의 객체 전환 허용](lifecycle-configuration-examples.md#lc-small-objects) 섹션을 참조하세요.

서로 다른 필터 요소를 결합할 수 있으며, 이 경우 Amazon S3는 논리적 `AND`를 사용합니다.

## 필터링 예제
<a name="filter-examples"></a>

다음은 서로 다른 필터 요소를 사용할 수 있는 방법을 보여주는 예제입니다.
+ **키 접두사를 사용하여 필터 지정** – 이 예시는 키 이름 접두사(`logs/`)에 기반하여 객체의 하위 집합에 적용되는 S3 수명 주기 규칙을 보여 줍니다. 예를 들어, 이 수명 주기 규칙은 객체 `logs/mylog.txt`, `logs/temp1.txt` 및 `logs/test.txt`에 적용됩니다. 이 규칙은 객체 `example.jpg`에는 적용되지 않습니다.

  ```
  <LifecycleConfiguration>
      <Rule>
          <Filter>
             <Prefix>logs/</Prefix>
          </Filter>
          transition/expiration actions
           ...
      </Rule>
      ...
  </LifecycleConfiguration>
  ```
**참고**  
 동일한 문자로 시작하는 접두사가 하나 이상 있는 경우 필터에 후행 슬래시(`/`)가 없는 부분 접두사를 지정하여 규칙에 해당 접두사를 모두 포함할 수 있습니다. 예를 들어, 다음과 같은 접두사가 있다고 가정해 보세요.  

  ```
  sales1999/
                  sales2000/
                  sales2001/
  ```
규칙에 세 접두사를 모두 포함하려면 수명 주기 규칙에서 `sales`를 접두사로 지정합니다.

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

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

  객체 키에 대한 자세한 내용은 [Amazon S3 객체 이름 지정](object-keys.md) 섹션을 참조하십시오.
+ **객체 태그에 기반한 필터 지정** - 다음 예시에서 수명 주기 규칙은 태그(`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`를 수행합니다. 다음 사항에 유의하세요.
  + 각 태그는 키 및 값 **모두와 정확히 일치해야 합니다. `<Key>` 요소만 지정하고 `<Value>` 요소는 지정하지 않는 경우, 규칙은 태그 키와 일치하고 값이 지정되지 **않은 객체에만 적용됩니다.
  + 이 규칙은 규칙에 모든 태그가 지정되는 객체의 하위 집합에 적용됩니다. 객체에 추가 태그가 지정되어 있더라도 규칙은 계속 적용됩니다.
**참고**  
필터에서 복수의 태그를 지정할 경우, 각각의 태그 키가 고유해야 합니다.
+ **접두사와 하나 이상의 태그에 기반한 필터 지정** - 수명 주기 규칙에서 키 접두사 및 하나 이상의 태그에 기반하여 필터를 지정할 수 있습니다. 이 경우에도 아래와 같이 이 모든 필터 요소를 `<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>
  ```
+ **>객체 크기 필터 지정** - 객체 크기별로 규칙을 필터링하려면 최소 크기(`ObjectSizeGreaterThan`) 또는 최대 크기(`ObjectSizeLessThan`)를 지정하거나 객체 크기 범위를 지정하면 됩니다.

  객체 크기 값은 바이트 단위입니다. 최대 필터 크기는 50TB입니다. 일부 스토리지 클래스에는 최소 객체 크기 제한이 있습니다. 자세한 내용은 [Amazon S3 스토리지 클래스 비교](storage-class-intro.md#sc-compare) 섹션을 참조하세요.

  ```
  <LifecycleConfiguration>
      <Rule>
          <Filter>
              <ObjectSizeGreaterThan>500</ObjectSizeGreaterThan>   
          </Filter>
          <Status>Enabled</Status>
          transition/expiration actions
      </Rule>
  </LifecycleConfiguration>
  ```
**참고**  
`ObjectSizeGreaterThan` 및 `ObjectSizeLessThan` 필터는 지정된 값을 제외합니다. 예를 들어 128KB에서 1024KB로 객체를 설정하여 S3 Standard 스토리지 클래스에서 S3 Standard-IA 스토리지 클래스로 이동할 때 크기가 정확히 1024KB와 128KB인 객체는 S3 Standard-IA로 이전되지 않습니다. 대신 규칙은 크기가 128KB보다 크고 1024KB 미만인 객체에만 적용됩니다.

  객체 크기 범위를 지정하는 경우 `ObjectSizeGreaterThan` 정수는 `ObjectSizeLessThan` 값보다 작아야 합니다. 둘 이상의 필터를 사용하는 경우 `<And>` 요소로 필터를 묶어야 합니다. 다음 예에서는 500\$164,000바이트 범위의 객체를 지정하는 방법을 보여 줍니다.

  ```
  <LifecycleConfiguration>
      <Rule>
          <Filter>
              <And>
                  <Prefix>key-prefix</Prefix>
                  <ObjectSizeGreaterThan>500</ObjectSizeGreaterThan>
                  <ObjectSizeLessThan>64000</ObjectSizeLessThan>
              </And>    
          </Filter>
          <Status>Enabled</Status>
          transition/expiration actions
      </Rule>
  </LifecycleConfiguration>
  ```

# S3가 수명 주기 구성의 충돌을 처리하는 방법
<a name="lifecycle-conflicts"></a>

일반적으로 Amazon S3 수명 주기는 비용을 최적화합니다. 예를 들어, 두 만료 정책이 겹치는 경우 데이터가 예상보다 오래 저장되지 않도록 더 짧은 만료 정책이 적용됩니다. 마찬가지로, 두 전환 정책이 겹치는 경우 S3 수명 주기는 객체를 더 저렴한 비용의 스토리지 클래스로 전환합니다.

두 경우 모두 S3 수명 주기는 가장 비용이 적게 드는 경로를 선택하려고 시도합니다. 이 일반 규칙의 예외는 S3 Intelligent-Tiering 스토리지 클래스입니다. S3 Intelligent-Tiering은 S3 Glacier Flexible Retrieval 및 S3 Glacier Deep Archive 스토리지 클래스를 제외한 모든 스토리지 클래스보다 S3 수명 주기에서 우선 적용됩니다.

S3 수명 주기 구성에 규칙이 여러 개인 경우 객체는 같은 날에 여러 가지 S3 수명 주기 작업을 수행할 수 있습니다. 이러한 경우 Amazon S3은 다음과 같은 일반 규칙을 따릅니다.
+ 영구 삭제는 전환에 우선합니다.
+ 이전은 [삭제 마커](DeleteMarker.md) 생성에 우선합니다.
+ 객체에서 S3 Glacier Flexible Retrieval 및 S3 Standard-IA(또는 S3 One Zone-IA) 이전을 모두 사용할 수 있는 경우 Amazon S3가 S3 Glacier Flexible Retrieval 이전을 선택합니다.

## 중복 필터 및 충돌하는 수명 주기 작업의 예제
<a name="lifecycle-config-conceptual-ex5"></a>

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

**Example 1: 중복 접두사(충돌 없음)**  
다음에서 예로 든 구성에는 중복 접두사를 지정하는 규칙이 두 개 있습니다.  
+ 첫 번째 규칙은 버킷의 모든 객체를 의미하는 빈 필터를 지정합니다.
+ 두 번째 규칙은 버킷에서 객체의 하위 집합만을 의미하는 키 이름 접두사(`logs/`)를 지정합니다.
규칙 1은 생성 후 1년이 지난 모든 객체를 삭제하도록 Amazon S3에 요청합니다. 규칙 2는 생성 후 30일이 지난 객체의 하위 집합을 S3 Standard-IA 스토리지 클래스로 전환하도록 Amazon S3에 요청합니다.  

```
 1. <LifecycleConfiguration>
 2.   <Rule>
 3.     <ID>Rule 1</ID>
 4.     <Filter>
 5.     </Filter>
 6.     <Status>Enabled</Status>
 7.     <Expiration>
 8.       <Days>365</Days>
 9.     </Expiration>
10.   </Rule>
11.   <Rule>
12.     <ID>Rule 2</ID>
13.     <Filter>
14.       <Prefix>logs/</Prefix>
15.     </Filter>
16.     <Status>Enabled</Status>
17.     <Transition>
18.       <StorageClass>STANDARD_IA</StorageClass>
19.       <Days>30</Days>
20.     </Transition>
21.    </Rule>
22. </LifecycleConfiguration>
```
이 경우 충돌이 없으므로 Amazon S3는 `logs/` 접두사가 있는 객체를 생성 후 30일이 지나면 S3 Standard-IA 스토리지 클래스로 전환합니다. 생성 후 1년이 지나면 객체가 삭제됩니다.

**Example 2: 서로 충돌하는 수명 주기 작업**  
이 구성 예에는 객체 수명 주기 중 같은 시각에 동일한 객체 집합에 대해 두 가지 작업을 수행하도록 Amazon S3에 지시하는 규칙이 두 개 있습니다.  
+ 두 규칙은 동일한 키 이름 접두사를 지정하므로, 두 규칙은 동일한 객체 집합에 적용됩니다.
+ 두 규칙은, 규칙이 적용될 때 생성 후 365일이 지난 동일한 객체를 지정합니다.
+ 한 규칙은 객체를 S3 Standard-IA 스토리지 클래스로 전환하도록 Amazon S3에 지시하고, 이와 동시에 다른 규칙은 객체를 만료 처리하도록 Amazon S3에 지시합니다.

```
<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가 이 객체들에 대해 만료 작업을 선택합니다.

**Example 3: 중복 접두사로 인해 서로 충돌하는 수명 주기 작업**  
이 예제에서 구성에는 다음과 같이 중복 접두사를 지정하는 두 가지 규칙이 있습니다.  
+ 규칙 1은 빈 접두사(모든 객체를 의미)를 지정합니다.
+ 규칙 2는 모든 객체의 하위 집합을 식별하는 키 이름 접두사(`logs/`)를 지정합니다.
키 이름 접두사가 `logs/`인 객체의 하위 집합에는 두 규칙의 S3 수명 주기 작업이 적용됩니다. 한 규칙은 생성 후 10일이 지난 객체를 전환하도록 Amazon S3에 지시하고, 다른 규칙은 생성 후 365일이 지난 객체를 전환하도록 Amazon S3에 지시합니다.  

```
<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일 지난 객체를 전환하는 쪽을 선택합니다.

**Example 4: 태그 기반 필터링과 그로 인해 서로 충돌하는 수명 주기 작업**  
다음과 같이 각각 태그 필터를 지정하는 두 가지 규칙이 있는 S3 수명 주기 구성이 있다고 가정해 보겠습니다.  
+ 규칙 1은 태그 기반 필터(`tag1/value1`)를 지정합니다. 이 규칙은 생성 후 365일이 지난 객체를 S3 Glacier Flexible Retrieval 스토리지 클래스로 전환하도록 Amazon S3에 지시합니다.
+ 규칙 2는 태그 기반 필터(`tag2/value2`)를 지정합니다. 이 규칙은 생성 후 14일이 지난 객체를 만료 처리하도록 Amazon S3에 지시합니다.
S3 수명 주기 구성은 다음 예에 나와 있습니다.  

```
<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>value2</Value>
      </Tag>
    </Filter>
    <Status>Enabled</Status>
    <Expiration>
      <Days>14</Days> 
    </Expiration>
   </Rule>
</LifecycleConfiguration>
```
객체에 두 태그가 모두 있는 경우 Amazon S3는 따라야 할 규칙을 결정해야 합니다. 이 경우, Amazon S3은 생성 후 14일 지난 객체를 만료 처리합니다. 객체가 제거되므로 전환 작업이 적용되지 않습니다.





# S3 수명 주기 구성의 예제
<a name="lifecycle-configuration-examples"></a>

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

**Topics**
+ [생성 후 1일 이내에 모든 객체 아카이브](#lifecycle-config-ex1)
+ [수명 주기 규칙 임시 비활성화](#lifecycle-config-conceptual-ex2)
+ [객체의 수명 주기 동안 스토리지 클래스 티어 다운](#lifecycle-config-conceptual-ex3)
+ [여러 규칙 지정](#lifecycle-config-conceptual-ex4)
+ [버전 관리를 사용하는 버킷에 대한 수명 주기 규칙 지정](#lifecycle-config-conceptual-ex6)
+ [버전 관리를 사용하는 버킷에서 만료된 객체 삭제 마커 제거](#lifecycle-config-conceptual-ex7)
+ [멀티파트 업로드 중단을 위한 수명 주기 구성](#lc-expire-mpu)
+ [데이터가 없는 비최신 객체 만료](#lc-size-rules)
+ [예제: 128KB 미만의 객체 전환 허용](#lc-small-objects)

## 생성 후 1일 이내에 모든 객체 아카이브
<a name="lifecycle-config-ex1"></a>

각 S3 수명 주기 규칙에는 S3 수명 주기 규칙이 적용되는 버킷 내 객체의 하위 집합을 식별하는 데 사용할 수 있는 필터가 포함되어 있습니다. 다음 S3 수명 주기 구성은 필터를 지정하는 방법에 대한 예제입니다.
+ 이 S3 수명 주기 구성 규칙에서 필터는 키 접두사(`tax/`)를 지정합니다. 따라서 이 규칙은 `tax/doc1.txt` 및 `tax/doc2.txt`와 같은 키 이름 접두사 `tax/`가 있는 객체에 적용됩니다.

  이 규칙은 Amazon S3에 다음을 수행하도록 지시하는 두 가지 작업을 지정합니다.
  + 생성 후 365일(1년)이 지난 객체를 S3 Glacier Flexible Retrieval 스토리지 클래스로 전환합니다.
  + 생성 후 3,650일(10년)이 지난 객체를 삭제합니다(`Expiration` 작업).

  ```
  <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>
  ```

  생성 후 객체 기간을 일수로 지정하는 대신 각 작업에 날짜를 지정할 수 있습니다. 하지만 동일한 규칙에서 `Date`와 `Days`를 모두 사용할 수는 없습니다.
+ S3 수명 주기 규칙을 버킷의 모든 객체에 적용하려면 빈 접두사를 지정합니다. 다음 구성에서 규칙은 생성 후 0일이 지나면 객체를 S3 Glacier Flexible Retrieval 스토리지 클래스로 전환하도록 Amazon S3에 지시하는 `Transition` 작업을 지정합니다. 이 규칙은 객체를 생성한 후 UTC 자정에 S3 Glacier Flexible Retrieval에 아카이브할 수 있음을 의미합니다. 수명 주기 제한 사항에 대한 자세한 내용은 [전환에 대한 제약 조건 및 고려 사항](lifecycle-transition-general-considerations.md#lifecycle-configuration-constraints) 섹션을 참조하세요.

  ```
  <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/`가 있는 객체의 하위 집합과 특정 키 및 값을 가진 태그 두 개가 있는 객체에 S3 수명 주기 규칙을 적용합니다. 둘 이상의 필터를 지정하는 경우 예시와 같이 `<And>` 요소를 포함해야 합니다(Amazon S3가 논리적 `AND`를 적용하여 지정된 필터 조건을 결합함).

  ```
  ...
  <Filter>
     <And>
        <Prefix>tax/</Prefix>
        <Tag>
           <Key>key1</Key>
           <Value>value1</Value>
        </Tag>
        <Tag>
           <Key>key2</Key>
           <Value>value2</Value>
        </Tag>
      </And>
  </Filter>
  ...
  ```

  
+ 태그에만 기반을 두어 객체를 필터링할 수 있습니다. 예를 들어, 다음 S3 수명 주기 규칙은 지정된 태그가 두 개인 객체에 적용됩니다(접두사는 지정하지 않음).

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

  

**중요**  
S3 수명 주기 구성에 규칙이 여러 개인 경우 객체는 같은 날에 여러 가지 S3 수명 주기 작업을 수행할 수 있습니다. 이러한 경우 Amazon S3은 다음과 같은 일반 규칙을 따릅니다.  
영구 삭제는 전환에 우선합니다.
이전은 [삭제 마커](DeleteMarker.md) 생성에 우선합니다.
객체에서 S3 Glacier Flexible Retrieval 및 S3 Standard-IA(또는 S3 One Zone-IA) 전환을 모두 사용할 수 있는 경우 Amazon S3가 S3 Glacier 전환을 선택합니다.
 예시는 [중복 필터 및 충돌하는 수명 주기 작업의 예제](lifecycle-conflicts.md#lifecycle-config-conceptual-ex5) 섹션을 참조하세요.



## 수명 주기 규칙 임시 비활성화
<a name="lifecycle-config-conceptual-ex2"></a>

`status` 요소를 사용하여 S3 수명 주기 규칙을 일시적으로 비활성화할 수 있습니다. 이는 기존 규칙을 덮어쓰지 않고 새 규칙을 테스트하거나 구성 관련 문제를 해결하려는 경우에 유용할 수 있습니다. 다음 S3 수명 주기 구성에는 두 가지 규칙을 지정합니다.
+ 규칙 1은 객체 생성 직후 `logs/` 접두사가 있는 객체를 S3 Glacier Flexible Retrieval 스토리지 클래스로 전환하도록 Amazon S3에 지시합니다.
+ 규칙 2는 객체 생성 직후 `documents/` 접두사가 있는 객체를 S3 Glacier Flexible Retrieval 스토리지 클래스로 전환하도록 Amazon S3에 지시합니다.

구성에서 규칙 1은 활성화되어 있고 규칙 2는 비활성화되어 있습니다. Amazon S3는 비활성화된 규칙을 무시합니다.

```
<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>
    <Filter>
      <Prefix>documents/</Prefix>
    </Filter>
    <Status>Disabled</Status>
    <Transition>
      <Days>0</Days>
      <StorageClass>GLACIER</StorageClass>
    </Transition>
  </Rule>
</LifecycleConfiguration>
```

## 객체의 수명 주기 동안 스토리지 클래스 티어 다운
<a name="lifecycle-config-conceptual-ex3"></a>

이 예제에서는 S3 수명 주기 구성을 사용하여 수명 주기 동안 객체의 스토리지 클래스를 계층 다운합니다. 티어 다운을 사용하면 스토리지 비용을 줄일 수 있습니다. 요금에 대한 자세한 내용은 [Amazon S3 요금](https://aws.amazon.com/s3/pricing/)을 참조하세요.

다음 S3 수명 주기 구성에서는 키 이름 접두사가 `logs/`인 객체에 적용되는 규칙을 지정합니다. 이 규칙은 다음 작업을 지정합니다.
+ 두 전환 작업:
  + 생성 후 30일이 지난 객체를 S3 Standard-IA 스토리지 클래스로 전환합니다.
  + 생성 후 90일이 지난 객체를 S3 Glacier Flexible Retrieval 스토리지 클래스로 전환합니다.
+ 생성 후 1년이 지난 객체를 삭제하도록 Amazon S3에 지시하는 만료 작업 1개

```
<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>
```

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

**중요**  
S3 수명 주기 구성에 규칙이 여러 개인 경우 객체는 같은 날에 여러 가지 S3 수명 주기 작업을 수행할 수 있습니다. 이러한 경우 Amazon S3은 다음과 같은 일반 규칙을 따릅니다.  
영구 삭제는 전환에 우선합니다.
이전은 [삭제 마커](DeleteMarker.md) 생성에 우선합니다.
객체에서 S3 Glacier Flexible Retrieval 및 S3 Standard-IA(또는 S3 One Zone-IA) 전환을 모두 사용할 수 있는 경우 Amazon S3가 S3 Glacier 전환을 선택합니다.
 예시는 [중복 필터 및 충돌하는 수명 주기 작업의 예제](lifecycle-conflicts.md#lifecycle-config-conceptual-ex5) 섹션을 참조하세요.

## 여러 규칙 지정
<a name="lifecycle-config-conceptual-ex4"></a>



객체마다 다른 S3 수명 주기 작업을 원할 경우 여러 규칙을 지정할 수 있습니다. 다음 S3 수명 주기 구성에는 두 가지 규칙이 있습니다.
+ 규칙 1은 키 이름 접두사가 `classA/`인 객체에 적용되며, 생성 후 1년이 지난 객체를 S3 Glacier Flexible Retrieval 스토리지 클래스로 전환하고 10년이 지난 객체를 만료 처리하도록 Amazon S3에 지시합니다.
+ 규칙 2는 키 이름 접두사가 `classB/`인 객체에 적용되며, 생성 후 90일이 지난 객체를 S3 Standard-IA 스토리지 클래스로 전환하고 1년이 지난 객체를 삭제하도록 Amazon S3에 지시합니다.

```
<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>
```

**중요**  
S3 수명 주기 구성에 규칙이 여러 개인 경우 객체는 같은 날에 여러 가지 S3 수명 주기 작업을 수행할 수 있습니다. 이러한 경우 Amazon S3은 다음과 같은 일반 규칙을 따릅니다.  
영구 삭제는 전환에 우선합니다.
이전은 [삭제 마커](DeleteMarker.md) 생성에 우선합니다.
객체에서 S3 Glacier Flexible Retrieval 및 S3 Standard-IA(또는 S3 One Zone-IA) 전환을 모두 사용할 수 있는 경우 Amazon S3가 S3 Glacier 전환을 선택합니다.
 예시는 [중복 필터 및 충돌하는 수명 주기 작업의 예제](lifecycle-conflicts.md#lifecycle-config-conceptual-ex5) 섹션을 참조하세요.

## 버전 관리를 사용하는 버킷에 대한 수명 주기 규칙 지정
<a name="lifecycle-config-conceptual-ex6"></a>

버전 관리를 사용하는 버킷이 있다고 가정합니다. 즉, 각 객체에 대해 현재 버전과 0 버전 이상의 여러 버전이 있음을 의미합니다. S3 버전 관리에 대한 자세한 내용은 [S3 버전 관리로 여러 버전의 객체 유지](Versioning.md) 섹션을 참조하세요.

다음 예에서는 1년간의 기록을 유지하고 최신이 아닌 버전 5개를 보존하려고 합니다. S3 수명 주기 구성은 모든 객체의 1\$1100개 버전을 유지할 수 있도록 지원합니다. Amazon S3가 특정 버전을 만료하려면 5개 이상의 최신 버전이 있어야 합니다. Amazon S3는 보존하도록 지정된 수를 초과하는 모든 추가 비최신 버전을 영구적으로 삭제합니다. 삭제를 수행하려면 `NoncurrentDays` 및 `NewerNoncurrentVersions` 값을 모두 초과해야 합니다.

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

```
 1. <LifecycleConfiguration>
 2.     <Rule>
 3.         <ID>sample-rule</ID>
 4.         <Filter>
 5.            <Prefix></Prefix>
 6.         </Filter>
 7.         <Status>Enabled</Status>
 8.         <Transition>
 9.            <Days>90</Days>
10.            <StorageClass>STANDARD_IA</StorageClass>
11.         </Transition>
12.         <NoncurrentVersionTransition>      
13.             <NoncurrentDays>30</NoncurrentDays>      
14.             <StorageClass>GLACIER</StorageClass>   
15.         </NoncurrentVersionTransition>    
16.        <NoncurrentVersionExpiration>     
17.             <NewerNoncurrentVersions>5</NewerNoncurrentVersions>
18.             <NoncurrentDays>365</NoncurrentDays>    
19.        </NoncurrentVersionExpiration> 
20.     </Rule>
21. </LifecycleConfiguration>
```

## 버전 관리를 사용하는 버킷에서 만료된 객체 삭제 마커 제거
<a name="lifecycle-config-conceptual-ex7"></a>



버전 관리를 사용하는 버킷에는 최신 버전의 객체 1개와 각 객체에 대한 0개 이상의 비 최신 버전이 존재합니다. 객체를 삭제할 때는 다음 사항에 유의하세요.
+ 삭제 요청에서 버전 ID를 지정하지 않는 경우, Amazon S3에서는 그 객체를 삭제하는 대신 삭제 마커를 추가합니다. 최신 객체 버전이 최신이 아닌 버전이 되고 삭제 마커가 최신 버전이 됩니다.
+ 삭제 요청에서 버전 ID를 지정하는 경우, Amazon S3에서는 그 객체 버전을 영구적으로 삭제합니다(삭제 마커는 생성되지 않음).
+ 최신이 아닌 버전이 없는 삭제 마커는 *만료된 객체 삭제 마커*라고 부릅니다.

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

다음 예와 같이 `NoncurrentVersionExpiration` 작업을 사용하여 비최신 버전이 된 후 30일이 지나면 비최신 버전을 제거하고 최대 10개의 비최신 버전을 보존하는 S3 수명 주기 구성을 작성한다고 가정합니다. Amazon S3가 특정 버전을 만료하려면 10개 이상의 최신 버전이 있어야 합니다. Amazon S3는 보존하도록 지정된 수를 초과하는 모든 추가 비최신 버전을 영구적으로 삭제합니다. 삭제를 수행하려면 `NoncurrentDays` 및 `NewerNoncurrentVersions` 값을 모두 초과해야 합니다.

```
<LifecycleConfiguration>
    <Rule>
        ...
        <NoncurrentVersionExpiration>     
            <NewerNoncurrentVersions>10</NewerNoncurrentVersions>
            <NoncurrentDays>30</NoncurrentDays>    
        </NoncurrentVersionExpiration>
    </Rule>
</LifecycleConfiguration>
```

`NoncurrentVersionExpiration` 작업은 현재 객체 버전에는 적용되지 않습니다. 최신이 아닌 버전만 제거합니다.

최신 객체 버전의 경우 최신 객체 버전이 잘 정의된 수명 주기를 따르는지 여부에 따라 수명 주기를 관리할 수 있는 옵션이 다음과 같이 제공됩니다.
+ **최신 객체 버전은 잘 정의된 수명 주기를 따릅니다.**

  이 경우 다음 예시와 같이 Amazon S3에 최신 버전을 제거하도록 지시하는 `Expiration` 작업과 함께 S3 수명 주기 구성을 사용할 수 있습니다.

  ```
  <LifecycleConfiguration>
      <Rule>
          ...
          <Expiration>
             <Days>60</Days>
          </Expiration>
          <NoncurrentVersionExpiration>     
              <NewerNoncurrentVersions>10</NewerNoncurrentVersions>
              <NoncurrentDays>30</NoncurrentDays>    
          </NoncurrentVersionExpiration>
      </Rule>
  </LifecycleConfiguration>
  ```

  이 예에서 Amazon S3가 최신 버전의 객체 각각에 삭제 마커를 추가함으로써 생성된 후 60일이 지난 최신 버전을 제거합니다. 이 프로세스를 통해 최신 버전이 최신이 아닌 버전이 되고 삭제 마커가 최신 버전이 됩니다. 자세한 내용은 [S3 버전 관리로 여러 버전의 객체 유지](Versioning.md) 섹션을 참조하세요.
**참고**  
동일한 규칙에 `Days` 및 `ExpiredObjectDeleteMarker` 태그를 모두 지정할 수는 없습니다. `Days` 태그를 지정하면 삭제 마커의 기간이 사용 기간 기준을 충족할 때 Amazon S3가 자동으로 `ExpiredObjectDeleteMarker` 정리를 수행합니다. 삭제 마커가 유일한 버전이 되는 즉시 정리하려면 `ExpiredObjectDeleteMarker` 태그만 있는 별도의 규칙을 생성합니다.

  동일한 S3 수명 주기 구성의 `NoncurrentVersionExpiration` 작업은 최신 버전이 아닌 30일이 지난 객체를 제거합니다. 따라서 이 예제에서는 객체 생성 후 90일이 지나면 모든 객체 버전이 영구적으로 제거됩니다. 이 예시에서는 Amazon S3가 특정 버전을 만료하려면 10개 이상의 최신 버전이 있어야 합니다. Amazon S3는 보존하도록 지정된 수를 초과하는 모든 추가 비최신 버전을 영구적으로 삭제합니다. 삭제를 수행하려면 `NoncurrentDays` 및 `NewerNoncurrentVersions` 값을 모두 초과해야 합니다.

  만료된 객체 삭제 마커는 이 과정에서 생성되지만 Amazon S3에서 만료된 객체 삭제 마커를 자동 감지하여 제거합니다.
+ **객체의 최신 버전은 잘 정의된 수명 주기를 따르지 않습니다.**

  이 경우 객체가 필요 없는 경우 1개 이상의 최신이 아닌 버전에 삭제 마커를 생성하여 수동으로 객체를 제거할 수 있습니다. S3 수명 주기 구성에 `NoncurrentVersionExpiration` 작업을 사용하여 최신이 아닌 버전을 모두 제거하면 만료된 객체 삭제 마커가 생깁니다.

  특히 이 시나리오의 경우 S3 수명 주기 구성은 만료된 객체 삭제 마커를 제거하는 데 사용할 수 있는 `Expiration` 작업을 제공합니다.

  

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

`Expiration` 작업에서 `ExpiredObjectDeleteMarker` 요소를 `true`로 설정하여 Amazon S3에 만료된 객체 삭제 마커를 제거하도록 지시합니다.

**참고**  
`ExpiredObjectDeleteMarker` S3 수명 주기 작업을 사용하면 이 규칙은 태그 기반 필터를 지정할 수 없습니다.

## 멀티파트 업로드 중단을 위한 수명 주기 구성
<a name="lc-expire-mpu"></a>

Amazon S3 멀티파트 업로드 REST API 작업을 사용하여 대형 객체를 여러 부분으로 나누어 업로드할 수 있습니다. 멀티파트 업로드에 대한 자세한 내용은 [Amazon S3에서 멀티파트 업로드를 사용한 객체 업로드 및 복사](mpuoverview.md) 섹션을 참조하십시오.

멀티파트 업로드가 시작된 후 지정된 일수 내에 완료되지 않은 경우 S3 수명 주기 구성을 사용하여 미완료 멀티파트 업로드(규칙에 지정된 키 이름 접두사로 식별)를 중단하도록 Amazon S3에 지시할 수 있습니다. Amazon S3가 멀티파트 업로드를 중단할 때 멀티파트 업로드와 관련된 모든 부분을 삭제합니다. 이 프로세스는 Amazon S3에 저장된 부분으로 불완전한 멀티파트 업로드가 없도록 하여 스토리지 비용을 조정하는 데 도움이 됩니다.

**참고**  
`AbortIncompleteMultipartUpload` S3 수명 주기 작업을 사용하면 이 규칙은 태그 기반 필터를 지정할 수 없습니다.

다음은 `AbortIncompleteMultipartUpload` 작업으로 규칙을 지정하는 S3 수명 주기 구성의 예시입니다. 이 작업은 시작 후 7일이 지나면 미완료된 멀티파트 업로드를 중단하도록 Amazon S3에 지시합니다.

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

## 데이터가 없는 비최신 객체 만료
<a name="lc-size-rules"></a>

크기만 기준으로 객체를 전환하는 규칙을 생성할 수 있습니다. 최소 크기(`ObjectSizeGreaterThan`) 또는 최대 크기(`ObjectSizeLessThan`)를 지정하거나 객체 크기 범위를 바이트 단위로 지정할 수 있습니다. 접두사 및 크기 규칙과 같은 필터를 여러 개 사용하는 경우 `<And>` 요소로 필터를 묶어야 합니다.

```
<LifecycleConfiguration>
  <Rule>
    <ID>Transition with a prefix and based on size</ID>
    <Filter>
       <And>
          <Prefix>tax/</Prefix>
          <ObjectSizeGreaterThan>500</ObjectSizeGreaterThan>
       </And>   
    </Filter>
    <Status>Enabled</Status>
    <Transition>
      <Days>365</Days>
      <StorageClass>GLACIER</StorageClass>
    </Transition>
  </Rule>
</LifecycleConfiguration>
```

`ObjectSizeGreaterThan` 요소와 `ObjectSizeLessThan` 요소를 둘 다 사용하여 범위를 지정하는 경우 최대 객체 크기가 최소 객체 크기보다 커야 합니다. 둘 이상의 필터를 사용하는 경우 `<And>` 요소로 필터를 묶어야 합니다. 다음 예에서는 500\$164,000바이트 범위의 객체를 지정하는 방법을 보여 줍니다. 범위를 지정하는 경우 `ObjectSizeGreaterThan` 및 `ObjectSizeLessThan` 필터는 지정된 값을 제외합니다. 자세한 내용은 [필터 요소](intro-lifecycle-rules.md#intro-lifecycle-rules-filter) 섹션을 참조하세요.

```
<LifecycleConfiguration>
    <Rule>
        ...
          <And>
             <ObjectSizeGreaterThan>500</ObjectSizeGreaterThan>
             <ObjectSizeLessThan>64000</ObjectSizeLessThan>
          </And>
    </Rule>
</LifecycleConfiguration>
```

버전 관리를 사용하는 버킷에서 만든 비최신 삭제 마커 객체를 포함하여 데이터가 없는 비최신 객체를 특별히 만료시키는 규칙을 만들 수도 있습니다. 다음 예시에서는 `NoncurrentVersionExpiration` 작업을 사용하여 비최신 버전이 된 후 30일이 지나면 제거하고 비최신 버전을 최대 10개까지 보존합니다. 또한 이 예시에서는 `ObjectSizeLessThan` 요소를 사용하여 데이터가 없는 객체만 필터링합니다.

Amazon S3가 특정 버전을 만료하려면 10개 이상의 최신 버전이 있어야 합니다. Amazon S3는 보존하도록 지정된 수를 초과하는 모든 추가 비최신 버전을 영구적으로 삭제합니다. 삭제를 수행하려면 `NoncurrentDays` 및 `NewerNoncurrentVersions` 값을 모두 초과해야 합니다.

```
<LifecycleConfiguration>
  <Rule>
    <ID>Expire noncurrent with size less than 1 byte</ID>
    <Filter>
       <ObjectSizeLessThan>1</ObjectSizeLessThan>
    </Filter>
    <Status>Enabled</Status>
    <NoncurrentVersionExpiration>     
       <NewerNoncurrentVersions>10</NewerNoncurrentVersions>
       <NoncurrentDays>30</NoncurrentDays>
    </NoncurrentVersionExpiration>
  </Rule>
</LifecycleConfiguration>
```

## 예제: 128KB 미만의 객체 전환 허용
<a name="lc-small-objects"></a>

Amazon S3는 128KB 미만의 객체가 스토리지 클래스로 전환되지 않도록 하는 기본 동작을 수명 주기 구성에 적용합니다. 구성에 더 작은 크기를 지정하는 최소 크기(`ObjectSizeGreaterThan`) 또는 최대 크기(`ObjectSizeLessThan`) 필터를 추가하여 더 작은 객체가 전환되도록 할 수 있습니다. 다음 예제에서는 128KB보다 작은 객체의 S3 Glacier Instant Retrieval 스토리지 클래스 전환을 허용합니다.

```
<LifecycleConfiguration>
  <Rule>
    <ID>Allow small object transitions</ID>
    <Filter>
          <ObjectSizeGreaterThan>1</ObjectSizeGreaterThan>
    </Filter>
    <Status>Enabled</Status>
    <Transition>
      <Days>365</Days>
      <StorageClass>GLACIER_IR</StorageClass>
    </Transition>
  </Rule>
</LifecycleConfiguration>
```

**참고**  
2024년 9월 Amazon S3는 소형 객체의 기본 전환 동작을 다음과 같이 업데이트했습니다.  
**업데이트된 기본 전환 동작** - 2024년 9월부터 기본 동작은 128KB 미만의 객체가 스토리지 클래스로 전환되는 것을 금지합니다.
**이전의 기본 전환 동작** - 2024년 9월 이전의 기본 동작은 128KB 미만의 객체를 S3 Glacier Flexible Retrieval 및 S3 Glacier Deep Archive 스토리지 클래스로만 전환할 수 있었습니다.
2024년 9월 이전에 생성된 구성은 수정하지 않는 한 이전 전환 동작을 유지합니다. 즉, 규칙을 생성, 편집 또는 삭제하면 구성의 기본 전환 동작이 업데이트된 동작으로 변경됩니다. 사용 사례에 필요한 경우 128KB 미만의 객체가 S3 Glacier Flexible Retrieval 및 S3 Glacier Deep Archive로 전환되도록 기본 전환 동작을 변경할 수 있습니다. 이렇게 하려면 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html) 요청에서 선택적 `x-amz-transition-object-size-minimum-default` 헤더를 사용합니다.

다음 예시는 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html) 요청에서 `x-amz-transition-object-size-minimum-default` 헤더를 사용하여 S3 수명 주기 구성에 `varies_by_storage_class` 기본 전환 동작을 적용하는 방법을 보여줍니다. 이 동작을 통해 128KB보다 작은 객체를 S3 Glacier Flexible Retrieval 또는 S3 Glacier Deep Archive 스토리지 클래스로 전환할 수 있습니다. 기본적으로 다른 모든 스토리지 클래스는 128KB 미만의 전환을 허용하지 않습니다. 그래도 사용자 지정 필터를 사용하여 모든 스토리지 클래스의 최소 전환 크기를 변경할 수 있습니다. 사용자 지정 필터는 항상 기본 전환 동작보다 우선합니다.

```
HTTP/1.1 200
x-amz-transition-object-size-minimum-default: varies_by_storage_class
<?xml version="1.0" encoding="UTF-8"?>
...
```

# Amazon S3 수명 주기 문제 해결
<a name="troubleshoot-lifecycle"></a>

다음 정보는 Amazon S3 수명 주기 규칙과 관련된 문제를 해결하는 데 도움이 될 수 있습니다.

**Topics**
+ [버킷에서 목록 작업을 실행한 결과, 수명 주기 규칙에 따라 만료되었거나 전환된 것으로 생각되는 객체가 있었습니다.](#troubleshoot-lifecycle-1)
+ [수명 주기 규칙에 따라 취해진 조치를 모니터링하려면 어떻게 해야 하나요?](#troubleshoot-lifecycle-2)
+ [버전 관리가 활성화된 버킷에 수명 주기 규칙을 설정한 후에도 S3 객체 수가 계속 증가합니다.](#troubleshoot-lifecycle-3)
+ [수명 주기 규칙을 사용하여 S3 버킷을 비우려면 어떻게 해야 하나요?](#troubleshoot-lifecycle-4)
+ [객체를 더 저렴한 스토리지 클래스로 전환한 후 Amazon S3 청구액이 늘었습니다.](#troubleshoot-lifecycle-5)
+ [버킷 정책을 업데이트했지만 만료된 수명 주기 규칙으로 인해 S3 객체가 여전히 삭제되고 있습니다.](#troubleshoot-lifecycle-6)
+ [S3 수명 주기 규칙으로 인해 만료된 S3 객체를 복구할 수 있나요?](#troubleshoot-lifecycle-7)
+ [만료 및 전환 수명 주기 작업이 발생하지 않는 이유는 무엇입니까?](#troubleshoot-lifecycle-failures)
+ [수명 주기 규칙에서 접두사를 제외하려면 어떻게 해야 하나요?](#troubleshoot-lifecycle-8)
+ [수명 주기 규칙에 여러 접두사를 포함하려면 어떻게 해야 하나요?](#troubleshoot-lifecycle-9)

## 버킷에서 목록 작업을 실행한 결과, 수명 주기 규칙에 따라 만료되었거나 전환된 것으로 생각되는 객체가 있었습니다.
<a name="troubleshoot-lifecycle-1"></a>

S3 수명 주기 [객체 전환](https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-transition-general-considerations.html) 및 [객체 만료](https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-expire-general-considerations.html)는 비동기 작업입니다. 따라서 객체가 만료 또는 전환될 수 있는 시점과 실제로 전환되거나 만료되는 시점 사이에 지연이 있을 수 있습니다. 결제 변경 사항은 작업이 완료되지 않았더라도 수명 주기 규칙이 충족되는 즉시 적용됩니다. 이 동작에 대한 한 가지 예외는 S3 Intelligent-Tiering 스토리지 클래스로 전환하도록 수명 주기 규칙을 설정한 경우입니다. 이 경우 객체가 S3 Intelligent-Tiering으로 전환될 때까지 결제 변경이 발생하지 않습니다. 결제 변경에 대한 자세한 내용은 [버킷의 수명 주기 구성 설정](https://docs.aws.amazon.com/AmazonS3/latest/userguide/how-to-set-lifecycle-configuration-intro.html)을 참조하세요.

**참고**  
Amazon S3은 128KB보다 작은 객체를 S3 Standard 또는 S3 Standard-IA 스토리지 클래스에서 S3 Intelligent-Tiering, S3 Standard-IA 또는 S3 One Zone-IA 스토리지 클래스로 전환하지 않습니다.

## 수명 주기 규칙에 따라 취해진 조치를 모니터링하려면 어떻게 해야 하나요?
<a name="troubleshoot-lifecycle-2"></a>

다음 기능을 사용하여 수명 주기 규칙이 수행한 작업을 모니터링할 수 있습니다.
+ **S3 이벤트 알림** - S3 수명 주기 만료 또는 이전 이벤트에 대한 알림을 받도록 [S3 이벤트 알림](https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-configure-notification.html)을 설정할 수 있습니다.
+ **S3 서버 액세스 로그** - S3 버킷에 대한 서버 액세스 로그를 활성화하여 다른 스토리지 클래스로의 객체 이전 및 객체 만료와 같은 S3 수명 주기 관련 작업을 캡처합니다. 자세한 내용은 [수명 주기 및 로깅](https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-and-other-bucket-config.html#lifecycle-general-considerations-logging) 섹션을 참조하세요.

수명 주기 작업으로 인한 스토리지 변경을 매일 확인하려면 Amazon CloudWatch 지표를 사용하는 대신 [S3 Storage Lens 대시보드](https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage_lens_basics_metrics_recommendations.html#storage_lens_basics_dashboards)를 사용하는 것이 좋습니다. Storage Lens 대시보드에서 객체 개수 또는 크기를 모니터링하는 다음 지표를 볼 수 있습니다.
+ **최신 버전 바이트**
+ **최신 버전 객체 수**
+ **비최신 버전 바이트**
+ **비최신 버전 객체 수**
+ **삭제 마커 객체 수**
+ **삭제 마커 스토리지 바이트**
+ **불완전 멀티파트 업로드 바이트**
+ **불완전 멀티파트 업로드 객체 수**

## 버전 관리가 활성화된 버킷에 수명 주기 규칙을 설정한 후에도 S3 객체 수가 계속 증가합니다.
<a name="troubleshoot-lifecycle-3"></a>

[버전 관리를 사용하는 버킷](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html#versioning-states)에서 객체가 만료되도록 설정된 경우 객체가 버킷에서 완전히 삭제되지는 않습니다. 대신 [삭제 마커](https://docs.aws.amazon.com/AmazonS3/latest/userguide/DeleteMarker.html)가 객체의 최신 버전으로 만들어집니다. 삭제 마커는 여전히 객체로 집계됩니다. 따라서 현재 버전만 만료하도록 수명 주기 규칙을 생성하면 S3 버킷의 객체 수가 줄어들지 않고 실제로 증가합니다.

예를 들어 버전 관리가 활성화된 S3 버킷에 100개의 객체가 있고 7일 후에 객체의 현재 버전이 만료되도록 수명 주기 규칙이 설정되어 있다고 가정해 보겠습니다. 7일이 지나면 현재 비최신 버전인 원래 객체 100개 외에 100개의 삭제 마커가 생성되므로 객체 수가 200개로 늘어납니다. 버전 관리가 활성화된 버킷의 S3 수명 주기 구성 규칙 작업에 대한 자세한 내용은 [버킷에서 수명 주기 구성 설정](https://docs.aws.amazon.com/AmazonS3/latest/userguide/how-to-set-lifecycle-configuration-intro.html)을 참조하세요.

객체를 영구적으로 제거하려면 객체의 이전 버전, 만료된 삭제 마커 및 불완전 멀티파트 업로드를 삭제하는 수명 주기 구성을 추가하세요. 새 수명 주기 규칙을 만드는 방법에 대한 지침은 [버킷에 수명 주기 구성 설정](https://docs.aws.amazon.com/AmazonS3/latest/userguide/how-to-set-lifecycle-configuration-intro.html)을 참조하세요.

**참고**  
Amazon S3는 객체의 전환 또는 만료 날짜를 다음 날 자정(UTC)으로 반올림합니다.  
수명 주기 작업에 사용할 객체를 평가할 때 Amazon S3는 객체 생성 시간(UTC)을 사용합니다. 예를 들어 하루가 지나면 객체가 만료되도록 구성된 수명 주기 규칙이 있는 버전이 지정되지 않은 버킷을 생각해 보세요. 1월 1일 17:05 태평양 표준시(PDT)에 객체가 생성되었다고 가정해 보겠습니다. 이는 1월 2일 00:05 UTC에 해당합니다. 이 객체는 1월 3일 00:05 UTC에 하루가 지나고 나면 S3 라이프사이클에서 1월 4일 00:00 UTC에 객체를 평가할 때 만료될 수 있습니다.  
Amazon S3 수명 주기 작업은 비동기적으로 발생하기 때문에 수명 주기 규칙에 지정된 날짜와 객체의 실제 물리적 이전 사이에 약간의 지연이 있을 수 있습니다. 자세한 내용은 [이전 또는 만료 지연](how-to-set-lifecycle-configuration-intro.md#lifecycle-action-delay)을 참조하세요.  
자세한 내용은 [수명 주기 규칙: 객체 기간 기반](https://docs.aws.amazon.com/AmazonS3/latest/dev/intro-lifecycle-rules.html#intro-lifecycle-rules-number-of-days)을 참조하세요.
객체 잠금으로 보호되는 S3 객체의 경우 현재 버전은 영구적으로 삭제되지 않습니다. 대신 객체에 삭제 마커가 추가되어 객체가 비최신 상태가 됩니다. 그런 다음, 비최신 버전이 보존되며 영구적으로 만료되지 않습니다.

## 수명 주기 규칙을 사용하여 S3 버킷을 비우려면 어떻게 해야 하나요?
<a name="troubleshoot-lifecycle-4"></a>

S3 수명 주기 규칙은 수백만 개의 객체가 포함된 [S3 버킷을 비우는](https://docs.aws.amazon.com/AmazonS3/latest/userguide/empty-bucket.html) 효과적인 도구입니다. S3 버킷에서 많은 수의 객체를 삭제하려면 다음 두 쌍의 수명 주기 규칙을 사용해야 합니다.
+ **객체의 현재 버전 만료** 및 **이전 버전의 객체 영구 삭제**
+ **만료된 삭제 마커 삭제** 및 **불완전 멀티파트 업로드 삭제**

새 수명 주기 규칙을 만드는 방법에 대한 지침은 [버킷에서 수명 주기 구성 설정](https://docs.aws.amazon.com/AmazonS3/latest/userguide/how-to-set-lifecycle-configuration-intro.html)을 참조하세요.

**참고**  
객체 잠금으로 보호되는 S3 객체의 경우 현재 버전은 영구적으로 삭제되지 않습니다. 대신 객체에 삭제 마커가 추가되어 객체가 비최신 상태가 됩니다. 그런 다음, 비최신 버전이 보존되며 영구적으로 만료되지 않습니다.

## 객체를 더 저렴한 스토리지 클래스로 전환한 후 Amazon S3 청구액이 늘었습니다.
<a name="troubleshoot-lifecycle-5"></a>

객체를 더 저렴한 스토리지 클래스로 전환한 후 청구액이 늘어나는 데는 몇 가지 이유가 있습니다.
+ 작은 객체에 대한 S3 Glacier 오버헤드 요금

  S3 Glacier Flexible Retrieval 또는 S3 Glacier Deep Archive에 각 객체를 전환할 때 이 스토리지 업데이트에는 총 40KB의 총 오버헤드가 있습니다. 40KB 오버헤드의 일부로 8KB는 메타데이터와 객체 이름을 저장하는 데 사용됩니다. 이 8KB는 S3 Standard 요금에 따라 요금이 청구됩니다. 나머지 32KB는 인덱싱 및 관련 메타데이터에 사용됩니다. 이 32KB는 S3 Glacier Flexible Retrieval 또는 S3 Glacier Deep Archive 요금에 따라 요금이 청구됩니다.

  따라서 크기가 작은 객체를 여러 개 저장하는 경우 수명 주기 전환을 사용하지 않는 것이 좋습니다. 오버헤드 요금을 줄이려면 비교적 작은 객체 여러 개를 Amazon S3에 저장하기 전에 개수가 더 적은 큰 객체로 취합하는 것이 좋습니다. 비용 고려 사항과 관련한 자세한 내용은 [S3 Glacier Flexible Retrieval 및 S3 Glacier Deep Archive 스토리지 클래스로 전환(객체 아카이브)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-transition-general-considerations.html#before-deciding-to-archive-objects)을 참조하세요.
+ 최소 스토리지 요금

  일부 S3 스토리지 클래스에는 최소 스토리지 기간 요구 사항이 있습니다. 최소 기간이 충족되기 전에 해당 클래스에서 삭제, 덮어쓰기 또는 전환된 객체에는 비례 계산된 조기 전환 또는 삭제 요금이 부과됩니다. 이러한 최소 스토리지 기간 요구 사항은 다음과 같습니다.
  + S3 Standard-IA 및 S3 One Zone-IA - 30일
  + S3 Glacier Flexible Retrieval 및 S3 Glacier Instant Retrieval – 90일
  + S3 Glacier Deep Archive - 180일

  이러한 요구 사항에 대한 자세한 내용은 [S3 수명 주기를 사용하여 객체 전환](https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-transition-general-considerations.html)의 *제약 조건* 섹션을 참조하세요. 일반 S3 요금 정보는 [Amazon S3 요금](https://aws.amazon.com/s3/pricing/) 및 [AWS 요금 계산기](https://calculator.aws/#/addService/S3)를 참조하세요.
+ 수명 주기 전환 비용

  수명 주기 규칙에 따라 객체가 다른 스토리지 클래스로 전환될 때마다 Amazon S3는 해당 전환을 하나의 전환 요청으로 간주합니다. 이러한 전환 요청에 대한 비용은 이러한 스토리지 클래스의 비용에 추가됩니다. 많은 수의 객체를 전환하려는 경우 낮은 계층으로 전환할 때 요청 요금을 고려해야 합니다. 자세한 내용은 [Amazon S3 요금](https://aws.amazon.com/s3/pricing/)을 참조하세요.

## 버킷 정책을 업데이트했지만 만료된 수명 주기 규칙으로 인해 S3 객체가 여전히 삭제되고 있습니다.
<a name="troubleshoot-lifecycle-6"></a>

버킷 정책의 `Deny` 명령문은 수명 주기 규칙에 정의된 객체의 만료를 방지하지 않습니다. 수명 주기 작업(예: 전환 또는 만료)은 S3 `DeleteObject` 작업을 사용하지 않습니다. 대신 S3 수명 주기 작업은 내부 S3 엔드포인트를 사용하여 수행됩니다. (자세한 내용은 [수명 주기 및 로깅](https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-and-other-bucket-config.html#lifecycle-general-considerations-logging)을 참조하세요.) 

수명 주기 규칙이 작업을 수행하지 못하도록 하려면 규칙을 편집, 삭제 또는 [비활성화](https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-configuration-examples.html#lifecycle-config-conceptual-ex2)해야 합니다.

## S3 수명 주기 규칙으로 인해 만료된 S3 객체를 복구할 수 있나요?
<a name="troubleshoot-lifecycle-7"></a>

S3 수명 주기에 의해 만료된 객체를 복구하는 유일한 방법은 버전 관리를 사용하는 것인데, 객체가 만료 대상이 되기 전에 버전 관리를 적용해야 합니다. 수명 주기 규칙으로 인해 수행된 만료 작업은 취소할 수 없습니다. 설정된 S3 수명 주기 규칙에 따라 객체가 영구적으로 삭제된 경우 해당 객체를 복구할 수 없습니다. 버킷의 버전 관리를 활성화하려면 [S3 버전 관리로 여러 버전의 객체 유지](Versioning.md) 섹션을 참조하세요.

버킷에 버전 관리를 적용했는데 객체의 비최신 버전이 여전히 그대로 있는 경우 [만료된 객체의 이전 버전을 복원](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RestoringPreviousVersions.html)할 수 있습니다. S3 수명 주기 규칙 작업의 동작 및 버전 관리 상태에 대한 자세한 내용은 [수명 주기 작업을 설명할 요소](https://docs.aws.amazon.com/AmazonS3/latest/userguide/intro-lifecycle-rules.html#non-current-days-calculations)의 *수명 주기 작업 및 버킷의 버전 관리 상태* 표를 참조하세요.

**참고**  
S3 버킷이 [AWS 백업](https://docs.aws.amazon.com/aws-backup/latest/devguide/s3-backups.html) 또는 [S3 복제](https://docs.aws.amazon.com/AmazonS3/latest/userguide/replication.html)로 보호되는 경우 이러한 기능을 사용하여 만료된 객체를 복구할 수도 있습니다.

## 만료 및 전환 수명 주기 작업이 발생하지 않는 이유는 무엇입니까?
<a name="troubleshoot-lifecycle-failures"></a>

버전 관리를 사용하거나 버전 관리가 일시 중지된 버킷의 경우, Amazon S3가 만료 작업을 처리하는 방식에 대한 몇 가지 고려 사항이 있습니다.
+ 객체 만료가 객체의 현재 버전에만 적용됩니다(비최신 객체 버전에 영향이 없음).
+ 객체 버전이 1개 이상이고 삭제 마커가 최신 버전이면 Amazon S3은 작업을 수행하지 않습니다.
+ Amazon S3는 S3 Object Lock이 적용된 비최신 버전의 객체에 대해서는 어떠한 조치도 취하지 않습니다.
+ 복제 상태가 `PENDING`인 객체의 경우 Amazon S3는 최신 또는 비최신 버전의 객체에 대해 어떠한 조치도 취하지 않습니다.

수명 주기 스토리지 클래스 전환에는 다음과 같은 제약이 있습니다.
+ 기본적으로 128KB 미만의 객체는 어떤 스토리지 클래스로도 전환되지 않습니다.
+ 객체를 S3 Standard-IA 또는 S3 One Zone-IA로 전환하기 전에 최소 30일 동안 저장해야 합니다.
+ 버전 관리를 사용하거나 버전 관리가 일시 중지된 버킷의 경우, 복제 상태가 `PENDING`인 객체를 전환할 수 없습니다.

## 수명 주기 규칙에서 접두사를 제외하려면 어떻게 해야 하나요?
<a name="troubleshoot-lifecycle-8"></a>

S3 수명 주기는 규칙에서 접두사를 제외하는 것을 지원하지 않습니다. 대신 태그를 사용하여 규칙에 포함하려는 모든 객체에 태그를 지정합니다. 수명 주기 규칙에서 태그 사용에 대한 자세한 내용은 [생성 후 1일 이내에 모든 객체 아카이브](lifecycle-configuration-examples.md#lifecycle-config-ex1) 섹션을 참조하세요.

## 수명 주기 규칙에 여러 접두사를 포함하려면 어떻게 해야 하나요?
<a name="troubleshoot-lifecycle-9"></a>

S3 수명 주기는 규칙에 여러 접두사를 포함하는 것을 지원하지 않습니다. 대신 태그를 사용하여 규칙에 포함하려는 모든 객체에 태그를 지정합니다. 수명 주기 규칙에서 태그 사용에 대한 자세한 내용은 [생성 후 1일 이내에 모든 객체 아카이브](lifecycle-configuration-examples.md#lifecycle-config-ex1) 섹션을 참조하세요.

하지만 동일한 문자로 시작하는 접두사가 하나 이상 있는 경우 필터에 후행 슬래시(`/`)가 없는 부분 접두사를 지정하여 규칙에 해당 접두사를 모두 포함할 수 있습니다. 예를 들어, 다음과 같은 접두사가 있다고 가정해 보세요.

```
sales1999/
sales2000/
sales2001/
```

규칙에 세 접두사를 모두 포함하려면 수명 주기 규칙에 `<Prefix>sales</Prefix>`를 지정합니다.