버킷에 S3 Lifecycle 구성 설정

버킷에 S3 Lifecycle 구성 설정

Amazon S3 콘솔, AWS Command Line Interface(AWS CLI), AWS SDK 또는 Amazon S3 REST API로 버킷에 Amazon S3 Lifecycle 구성을 설정할 수 있어요. S3 Lifecycle 구성에 대한 자세한 내용은 "객체 수명 주기 관리"를 참고하세요.

참고: 디렉터리 버킷의 Lifecycle 구성을 보거나 편집하려면 AWS CLI, AWS SDK 또는 Amazon S3 REST API를 사용하세요. 자세한 내용은 "디렉터리 버킷용 S3 Lifecycle 작업"을 참고하세요.

S3 Lifecycle 구성에서는 Lifecycle 규칙으로 객체 수명 동안 Amazon S3가 수행하길 원하는 작업을 정의해요. 예를 들어 객체를 다른 스토리지 클래스로 전환하거나, 아카이브하거나, 지정한 기간 후에 만료(삭제)시키는 규칙을 정의할 수 있어요.

출처: 문서

본문

S3 Lifecycle 고려 사항

Lifecycle 구성을 설정하기 전에 다음을 주의하세요.

Lifecycle 구성 전파 지연 — 버킷에 S3 Lifecycle 구성을 추가하면 새 Lifecycle 구성이나 업데이트된 Lifecycle 구성이 모든 Amazon S3 시스템에 완전히 전파되기까지 보통 어느 정도 지연이 있어요. 구성이 완전히 적용되기까지 몇 분의 지연을 예상하세요. S3 Lifecycle 구성을 삭제할 때도 이 지연이 발생할 수 있어요.

전환 또는 만료 지연 — Lifecycle 규칙이 충족되는 시점과 규칙의 작업이 완료되는 시점 사이에는 지연이 있어요. 예를 들어 1월 1일에 Lifecycle 규칙으로 객체 집합이 만료된다고 가정해 보세요. 만료 규칙이 1월 1일에 충족됐어도 Amazon S3는 며칠이나 몇 주 후에야 이 객체를 실제로 삭제할 수도 있어요. S3 Lifecycle이 객체를 비동기적으로 전환이나 만료 대기열에 넣기 때문에 이런 지연이 발생해요. Lifecycle 규칙을 추가하거나 수정하면 S3 Lifecycle이 대상 객체를 즉시 또는 약간의 지연 후에 처리하기 시작할 수 있어요. S3 Lifecycle이 삭제 마커를 만들거나 객체를 전환하면 타임스탬프는 작업이 수행된 실제 시각과 관계없이 작업이 발생한 날짜의 자정(UTC)으로 설정돼요. 하지만 청구 변경은 작업이 완료되지 않았어도 보통 Lifecycle 규칙이 충족될 때 적용돼요. 자세한 내용은 "청구 변경"을 참고하세요. 활성 Lifecycle 규칙이 수행한 업데이트의 효과를 모니터링하려면 "내 Lifecycle 규칙이 수행한 작업을 어떻게 모니터링하나요?"를 참고하세요.

참고: Lifecycle 규칙이 생성되거나 수정되면 이미 대상 기준을 충족하는 객체가 즉시 처리될 수 있어요.

Lifecycle 규칙 업데이트, 비활성화 또는 삭제 — Lifecycle 규칙을 비활성화하거나 삭제하면 Amazon S3는 약간의 지연 후 삭제나 전환을 위해 새 객체를 예약하는 것을 중단해요. 이미 예약된 객체는 예약이 해제되어 삭제되거나 전환되지 않아요.

참고: Lifecycle 규칙을 업데이트하거나 비활성화하거나 삭제하기 전에 LIST API 작업(ListObjectsV2, ListObjectVersions, ListMultipartUploads 등)이나 "S3 Inventory로 데이터 분류 및 분석"을 사용해 사용 사례에 따라 Amazon S3가 대상 객체를 전환·만료했는지 확인하세요. Lifecycle 규칙의 업데이트·비활성화·삭제에 문제가 있다면 "Amazon S3 Lifecycle 문제 해결"을 참고하세요.

기존 객체와 새 객체 — 버킷에 Lifecycle 구성을 추가하면 구성 규칙이 기존 객체와 나중에 추가하는 객체 모두에 적용돼요. 예를 들어 오늘 특정 접두사의 객체가 생성 후 30일 지나면 만료되게 하는 만료 작업이 있는 Lifecycle 구성 규칙을 추가하면, Amazon S3는 30일보다 오래됐고 지정된 접두사를 가진 기존 객체를 제거 대기열에 넣어요.

Lifecycle 규칙의 효과 모니터링 — 활성 Lifecycle 규칙이 수행한 업데이트의 효과를 모니터링하려면 "내 Lifecycle 규칙이 수행한 작업을 어떻게 모니터링하나요?"를 참고하세요.

청구 변경 — Lifecycle 구성 규칙이 충족되는 시점과 규칙 충족으로 트리거된 작업이 수행되는 시점 사이에는 지연이 있을 수 있어요. 하지만 작업이 아직 수행되지 않았어도 Lifecycle 구성 규칙이 충족되면 바로 청구 변경이 발생해요.

예를 들어 객체 만료 시각이 지나면 객체가 즉시 삭제되지 않아도 저장 요금이 부과되지 않아요. 마찬가지로 객체 전환 시각이 지나면 객체가 즉시 S3 Glacier Flexible Retrieval 스토리지 클래스로 전환되지 않아도 S3 Glacier Flexible Retrieval 저장 요율로 청구돼요.

하지만 S3 Intelligent-Tiering 스토리지 클래스로의 Lifecycle 전환은 예외예요. 객체가 S3 Intelligent-Tiering 스토리지 클래스로 전환된 후에야 청구 변경이 발생해요.

S3 Glacier Flexible Retrieval과 S3 Glacier Deep Archive로의 전환에는 실제 전환이 언제 일어나는지와 관계없이 Lifecycle 규칙이 충족될 때 객체당 저장 오버헤드(객체당 40KB)와 최소 저장 기간 요금(S3 Glacier Flexible Retrieval 90일, S3 Glacier Deep Archive 180일)도 시작돼요. Glacier 저장 오버헤드에 대한 자세한 내용은 "비용 고려 사항"을 참고하세요.

여러 규칙 또는 충돌하는 규칙 — S3 Lifecycle 구성에 여러 규칙이 있으면 객체가 같은 날 여러 S3 Lifecycle 작업의 대상이 될 수 있어요. 이 경우 Amazon S3는 다음 일반 규칙을 따릅니다.

  • 영구 삭제가 전환보다 우선해요.
  • 전환이 삭제 마커 생성보다 우선해요.
  • 객체가 S3 Glacier Flexible Retrieval과 S3 Standard-IA(또는 S3 One Zone-IA) 전환 모두의 대상이면 Amazon S3는 S3 Glacier Flexible Retrieval 전환을 선택해요.

예시는 "겹치는 필터 및 충돌하는 Lifecycle 작업의 예시"를 참고하세요.

S3 Lifecycle 구성 설정 방법

Amazon S3 콘솔, AWS Command Line Interface(AWS CLI), AWS SDK 또는 Amazon S3 REST API로 일반 용도 버킷에 Amazon S3 Lifecycle 구성을 설정할 수 있어요.

AWS CloudFormation 템플릿과 예시에 대한 자세한 내용은 CloudFormation User Guide의 Working with AWS CloudFormation templates와 AWS::S3::Bucket을 참고하세요.

공유 접두사(공통 문자열로 시작하는 객체 이름)나 태그를 사용해 버킷의 모든 객체 또는 객체 하위 집합에 대한 Lifecycle 규칙을 정의할 수 있어요. Lifecycle 규칙에서 현재 및 비현재 객체 버전에 특정한 작업을 정의할 수 있어요. 자세한 내용은 다음을 참고하세요.

  • 객체 수명 주기 관리
  • S3 Versioning으로 객체의 여러 버전 유지

Lifecycle 규칙을 만들려면

  1. AWS Management Console에 로그인하고 https://console.aws.amazon.com/s3/에서 Amazon S3 콘솔을 엽니다.

  2. 왼쪽 탐색 창에서 General purpose buckets을 선택합니다.

  3. 버킷 목록에서 Lifecycle 규칙을 만들 버킷의 이름을 선택합니다.

  4. Management 탭을 선택하고 Create lifecycle rule을 선택합니다.

  5. Lifecycle rule name에서 규칙 이름을 입력합니다. 이름은 버킷 내에서 고유해야 합니다.

  6. Lifecycle 규칙의 범위를 선택합니다.

    • 특정 접두사나 태그의 모든 객체에 적용하려면 Limit the scope to specific prefixes or tags를 선택합니다.
      • 접두사로 범위를 제한하려면 Prefix에 접두사를 입력합니다.
      • 태그로 범위를 제한하려면 Add tag를 선택하고 태그 키와 값을 입력합니다.
    • 객체 이름 접두사에 대한 자세한 내용은 "Amazon S3 객체 이름 지정", 객체 태그에 대한 자세한 내용은 "객체 태그 지정"을 참고하세요.
    • 버킷의 모든 객체에 적용하려면 This rule applies to all objects in the bucket을 선택한 다음 I acknowledge that this rule applies to all objects in the bucket을 선택합니다.
  7. 규칙을 객체 크기로 필터링하려면 Specify minimum object size, Specify maximum object size 또는 둘 다 선택할 수 있습니다.

    • Minimum object size나 Maximum object size에 값을 지정할 때는 값이 0바이트보다 크고 최대 50TB여야 합니다. 이 값은 바이트, KB, MB, GB로 지정할 수 있습니다.
    • 두 값을 모두 지정할 때는 최대 객체 크기가 최소 객체 크기보다 커야 합니다.

    참고: Minimum object size와 Maximum object size 필터는 지정된 값을 제외해요. 예를 들어 Minimum object size가 128KB인 객체를 만료시키는 필터를 설정하면 정확히 128KB인 객체는 만료되지 않아요. 대신 규칙은 128KB보다 큰 객체에만 적용돼요.

  8. Lifecycle rule actions에서 Lifecycle 규칙이 수행할 작업을 선택합니다.

    • 객체 현재 버전을 스토리지 클래스 간 전환
    • 객체 이전 버전을 스토리지 클래스 간 전환
    • 객체 현재 버전 만료

    참고: S3 Versioning이 활성화되지 않은 버킷에서 현재 버전을 만료시키면 Amazon S3가 객체를 영구적으로 삭제해요. 자세한 내용은 "Lifecycle 작업 및 버킷 버전 관리 상태"를 참고하세요.

    • 객체 이전 버전 영구 삭제
    • 만료된 삭제 마커 또는 불완전한 멀티파트 업로드 삭제

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

  9. 객체 현재 버전을 스토리지 클래스 간 전환하려면 Transition current versions of objects between storage classes에서 다음을 수행합니다.

    • Storage class transitions에서 전환할 스토리지 클래스를 선택합니다. 가능한 전환 목록은 "지원되는 Lifecycle 전환"을 참고하세요. 다음 스토리지 클래스 중에서 선택할 수 있습니다.
      • S3 Standard-IA
      • S3 Intelligent-Tiering
      • S3 One Zone-IA
      • S3 Glacier Instant Retrieval
      • S3 Glacier Flexible Retrieval
      • S3 Glacier Deep Archive
    • Days after object creation에서 객체를 전환할 생성 후 일수를 입력합니다.
    • 스토리지 클래스에 대한 자세한 내용은 "Amazon S3 스토리지 클래스 이해 및 관리"를 참고하세요. 현재 또는 이전 객체 버전, 또는 둘 다에 대한 전환을 정의할 수 있습니다. 버전 관리를 사용하면 한 버킷에 객체의 여러 버전을 보관할 수 있습니다. 버전 관리에 대한 자세한 내용은 "S3 콘솔 사용"을 참고하세요.

    중요: S3 Glacier Instant Retrieval, S3 Glacier Flexible Retrieval 또는 Glacier Deep Archive 스토리지 클래스를 선택해도 객체는 Amazon S3에 남아요. 별도의 Amazon Glacier 서비스로는 직접 접근할 수 없어요. 자세한 내용은 "Amazon S3 Lifecycle을 사용한 객체 전환"을 참고하세요.

  10. 객체 비현재 버전을 스토리지 클래스 간 전환하려면 Transition noncurrent versions of objects between storage classes에서 다음을 수행합니다.

    • Storage class transitions에서 전환할 스토리지 클래스를 선택합니다. 가능한 전환 목록은 "지원되는 Lifecycle 전환"을 참고하세요. 다음 스토리지 클래스 중에서 선택할 수 있습니다.
      • S3 Standard-IA
      • S3 Intelligent-Tiering
      • S3 One Zone-IA
      • S3 Glacier Instant Retrieval
      • S3 Glacier Flexible Retrieval
      • S3 Glacier Deep Archive
    • Days after object becomes noncurrent에서 객체를 전환할 생성 후 일수를 입력합니다.
  11. 객체 현재 버전을 만료하려면 Expire current versions of objects의 Number of days after object creation에서 일수를 입력합니다.

    중요: 버전 관리 없는 버킷에서 만료 작업은 Amazon S3가 객체를 영구적으로 제거하는 결과를 낳아요. Lifecycle 작업에 대한 자세한 내용은 "Lifecycle 작업을 설명하는 요소"를 참고하세요.

  12. 객체 이전 버전을 영구 삭제하려면 Permanently delete noncurrent versions of objects의 Days after objects become noncurrent에서 일수를 입력합니다. 선택적으로 Number of newer versions to retain에 값을 입력해 유지할 더 새로운 버전 수를 지정할 수 있습니다.

  13. Delete expired delete markers or incomplete multipart uploads에서 Delete expired object delete markers와 Delete incomplete multipart uploads를 선택합니다. 그런 다음 불완전한 멀티파트 업로드를 종료하고 정리할 멀티파트 업로드 시작 후 일수를 입력합니다.

    • 멀티파트 업로드에 대한 자세한 내용은 "Amazon S3에서 멀티파트 업로드를 사용한 객체 업로드 및 복사"를 참고하세요.
  14. Create rule을 선택합니다. 규칙에 오류가 없으면 Amazon S3가 규칙을 활성화하고 Management 탭의 Lifecycle rules에서 확인할 수 있습니다.

S3 Lifecycle 구성을 관리하는 데 다음 AWS CLI 명령을 사용할 수 있어요.

  • put-bucket-lifecycle-configuration
  • get-bucket-lifecycle-configuration
  • delete-bucket-lifecycle

AWS CLI 설정에 대한 지침은 Amazon S3 API Reference의 "AWS CLI로 Amazon S3 개발"을 참고하세요.

Amazon S3 Lifecycle 구성은 XML 파일이에요. 하지만 AWS CLI를 사용할 때는 XML 형식을 지정할 수 없고 JSON 형식을 지정해야 해요. 다음은 AWS CLI 명령에 지정할 수 있는 XML Lifecycle 구성 예시와 그에 해당하는 JSON 구성이에요.

다음 S3 Lifecycle 구성 예시를 고려해 보세요.

예제 1 — XML

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

예제 1 — JSON

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

예제 2 — XML

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

예제 2 — JSON

{
    "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. JSON Lifecycle 구성을 파일에 저장합니다(예: lifecycle.json).
  2. 다음 AWS CLI 명령을 실행해 버킷에 Lifecycle 구성을 설정합니다. 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 Lifecycle 구성을 검색합니다.
$ aws s3api get-bucket-lifecycle-configuration \
--bucket amzn-s3-demo-bucket
  1. S3 Lifecycle 구성을 삭제하려면 delete-bucket-lifecycle AWS CLI 명령을 사용합니다.
aws s3api delete-bucket-lifecycle \
--bucket amzn-s3-demo-bucket

Java — AWS SDK for Java로 버킷의 S3 Lifecycle 구성을 관리할 수 있어요. S3 Lifecycle 구성 관리에 대한 자세한 내용은 "객체 수명 주기 관리"를 참고하세요.

참고: 버킷에 S3 Lifecycle 구성을 추가하면 Amazon S3는 기존 Lifecycle 구성(있다면)을 대체해요. 구성을 업데이트하려면 구성을 검색해 원하는 변경을 한 다음 수정된 구성을 버킷에 추가해요.

AWS SDK for Java로 Lifecycle 구성을 관리하려면 다음을 할 수 있어요.

  • 버킷에 Lifecycle 구성을 추가합니다.
  • Lifecycle 구성을 검색하고 다른 규칙을 추가해 업데이트합니다.
  • 수정된 Lifecycle 구성을 버킷에 추가합니다. Amazon S3가 기존 구성을 대체합니다.
  • 구성을 다시 검색하고 규칙 수를 출력해 올바른 규칙 수인지 확인합니다.
  • Lifecycle 구성을 삭제하고 다시 검색해 삭제됐는지 확인합니다.

AWS SDK for Java로 버킷에 Lifecycle 구성을 설정하는 예시는 Amazon S3 API Reference의 버킷에 Lifecycle 구성 설정을 참고하세요.

.NET — AWS SDK for .NET으로 버킷의 S3 Lifecycle 구성을 관리할 수 있어요. Lifecycle 구성 관리에 대한 자세한 내용은 "객체 수명 주기 관리"를 참고하세요.

참고: Lifecycle 구성을 추가하면 Amazon S3는 지정된 버킷의 기존 구성을 대체해요. 구성을 업데이트하려면 먼저 Lifecycle 구성을 검색하고 변경한 다음 수정된 Lifecycle 구성을 버킷에 추가해야 해요.

다음 예시는 AWS SDK for .NET으로 버킷의 Lifecycle 구성을 추가·업데이트·삭제하는 방법을 보여줘요. 이 코드 예시는 다음을 수행해요.

  • 버킷에 Lifecycle 구성을 추가합니다.
  • Lifecycle 구성을 검색하고 다른 규칙을 추가해 업데이트합니다.
  • 수정된 Lifecycle 구성을 버킷에 추가합니다. Amazon S3가 기존 Lifecycle 구성을 대체합니다.
  • 구성을 다시 검색하고 구성의 규칙 수를 출력해 확인합니다.
  • Lifecycle 구성을 삭제하고 삭제를 확인합니다.
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);
        }
    }
}

코드 예시 설정·실행에 대한 자세한 내용은 AWS SDK for .NET Developer Guide의 AWS SDK for .NET 시작하기를 참고하세요.

Ruby — 클래스 AWS::S3::BucketLifecycleConfiguration을 사용해 AWS SDK for Ruby로 버킷의 S3 Lifecycle 구성을 관리할 수 있어요. S3 Lifecycle 구성 관리에 대한 자세한 내용은 "객체 수명 주기 관리"를 참고하세요.

Amazon Simple Storage Service API Reference의 다음 주제는 S3 Lifecycle 구성과 관련된 REST API 작업을 설명해요.

S3 Lifecycle 문제 해결

S3 Lifecycle 작업 중 발생할 수 있는 일반적인 문제는 "Amazon S3 Lifecycle 문제 해결"을 참고하세요.

더 알아보기 (Learn more)