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

.NET용 AWS SDK를 사용하여 객체 수명 주기 관리

.NET용 AWS SDK를 사용하여 버킷에서 수명 주기 구성을 관리할 수 있습니다. 자세한 내용은 객체 수명 주기 관리을(를) 참조하십시오.

버킷에 수명 주기 구성 추가

  1. LifeCycleConfiguration 클래스의 인스턴스를 만들고 LifecycleRules의 목록을 지정합니다.

  2. PutLifeCycleConfigurationRequest 객체를 만듭니다.

    버킷 이름과 이전 단계에서 만든 LifeCycleConfiguration 인스턴스를 제공해야 합니다.

  3. client.PutLifecycleConfiguration을 실행합니다.

다음은 위에서 설명한 작업을 실행하는 C# 코드 조각입니다. 수명 주기 구성은 하나의 규칙("아카이빙 및 삭제 규칙")을 정의하여 Amazon S3가 키 접두사 "projectdocs/"가 지정된 모든 객체에서 실행할 두 가지 작업을 지정합니다.

Copy
string bucketName = "examplebucket"; // Add a sample configuration using (client = new AmazonS3Client()){ var lifeCycleConfiguration = new LifecycleConfiguration() { Rules = new List<LifecycleRule> { new LifecycleRule { Id = "Archive and delete rule", Prefix = "projectdocs/", Status = LifecycleRuleStatus.Enabled, Transition = new LifecycleTransition() { Days = 365, StorageClass = S3StorageClass.Glacier }, Expiration = new LifecycleRuleExpiration() { Days = 3650 } } } }; PutLifecycleConfigurationRequest request = new PutLifecycleConfigurationRequest { BucketName = bucketName, Configuration = configuration }; var response = client.PutLifecycleConfiguration(request); }

버킷이 버전 관리 활성화된 경우 다음 C# 코드 조각에 표시된 바와 같이 Amazon S3가 최신이 아닌 객체를 전환 및 삭제하는 NoncurrentVersionExpirationNoncurrentVersionTransition 수명 주기 작업을 지정할 수 있습니다. 수명 주기 규칙은 키 접두사 "logs/"가 지정된 객체에 적용됩니다. 이 규칙은 두 가지 작업을 설정합니다. NoncurrentVersionTransition 작업은 Amazon S3에 최신이 아닌 객체를 10일 후 GLACIER 스토리지 클래스로 전환하도록 요청합니다. NoncurrentVersionExpiration 작업은 Amazon S3에 최신 버전이 아닌 객체를 30일 후 만료시키도록 요청합니다. 이러한 작업에 대한 자세한 내용은 수명 주기 구성의 요소 단원을 참조하십시오.

Copy
string bucketName = "versioningenabled-examplebucket"; // Add a sample configuration using (client = new AmazonS3Client()){ var lifeCycleConfiguration = new LifecycleConfiguration() { Rules = new List<LifecycleRule> { new LifecycleRule { Id = "new rule", Prefix = "logs/", Status = LifecycleRuleStatus.Enabled, NoncurrentVersionTransition = new LifecycleRuleNoncurrentVersionTransition() { NoncurrentDays = 10, StorageClass = S3StorageClass.Glacier }, NoncurrentVersionExpiration = new LifecycleRuleNoncurrentVersionExpiration() { NoncurrentDays = 30 } } } }; PutLifecycleConfigurationRequest request = new PutLifecycleConfigurationRequest { BucketName = bucketName, Configuration = configuration }; var response = client.PutLifecycleConfiguration(request); }

기존 수명 주기 구성을 업데이트하려면

  • 버킷에 수명 주기 구성을 추가하면 기존 수명 주기 구성이 대체됩니다. 기존 구성을 업데이트하려면 먼저 기존 구성을 검색하여 수정한 후, 다음 C# 코드 조각에 표시된 바와 같이 수정한 구성을 버킷에 추가합니다.

이 조각은 기존 구성을 불러오고 NewRule ID로 새로운 규칙을 추가합니다.

Copy
// Retrieve lifecycle configuration. GetLifecycleConfigurationRequest request = new GetLifecycleConfigurationRequest { BucketName = bucketName }; var response = client.GetLifecycleConfiguration(request); var configuration = response.Configuration; // Add new rule. configuration.Rules.Add(new LifecycleRule { Id = "NewRule", Prefix = "YearlyDocuments/", Expiration = new LifecycleRuleExpiration { Date = DateTime.Now.AddYears(10) } }); PutLifecycleConfigurationRequest request = new PutLifecycleConfigurationRequest { BucketName = bucketName, Configuration = configuration }; var response = client.PutLifecycleConfiguration(request);

예 프로그램 목록

다음 C# 코드 예제는 버킷에 수명 주기 구성을 추가, 업데이트 및 삭제하는 전체 코드를 제공합니다. 코드를 업데이트하고 코드가 예제 수명 주기 구성을 추가할 수 있는 버킷 이름을 제공해야 합니다.

실제 예제를 작성하여 테스트하는 방법에 대한 자세한 내용은 .NET용 AWS SDK 사용 .NET 코드 예제 테스트를 참조하십시오.

Copy
using System; using System.Collections.Generic; using System.Diagnostics; using Amazon.S3; using Amazon.S3.Model; namespace aws.amazon.com.s3.documentation { class S3Sample { static string bucketName = "*** Provide bucket name ***"; static AmazonS3 client; public static void Main(string[] args) { try { AmazonS3Config s3Config = new AmazonS3Config(); using (client = new AmazonS3Client(s3Config)) { var lifeCycleConfiguration = new LifecycleConfiguration() { Rules = new List<LifecycleRule> { new LifecycleRule { Id = "Archive immediately rule", Prefix = "glacierobjects/", Status = LifecycleRuleStatus.Enabled, Transition = new LifecycleTransition() { Days = 0, StorageClass = S3StorageClass.Glacier } }, new LifecycleRule { Id = "Archive and then delete rule", Prefix = "projectdocs/", Status = LifecycleRuleStatus.Enabled, Transition = new LifecycleTransition() { Days = 365, StorageClass = S3StorageClass.Glacier }, Expiration = new LifecycleRuleExpiration() { Days = 3650 } } } }; // Add the configuration to the bucket PutLifeCycleConfiguration(lifeCycleConfiguration); // Retrieve an existing configuration lifeCycleConfiguration = GetLifeCycleConfiguration(); // Add a new rule. lifeCycleConfiguration.Rules.Add(new LifecycleRule { Id = "NewRule", Prefix = "YearlyDocuments/", Expiration = new LifecycleRuleExpiration { Date = DateTime.Now.AddYears(10) } }); // Add the configuration to the bucket PutLifeCycleConfiguration(lifeCycleConfiguration); // Verify that there are now three rules lifeCycleConfiguration = GetLifeCycleConfiguration(); Console.WriteLine("Expected # of rulest=3; found:{0}", lifeCycleConfiguration.Rules.Count); // Delete the configuration DeleteLifecycleConfiguration(); // Retrieve a nonexistent configuration lifeCycleConfiguration = GetLifeCycleConfiguration(); Debug.Assert(lifeCycleConfiguration == null); } Console.WriteLine("Example complete. To continue, click Enter..."); Console.ReadKey(); } catch (AmazonS3Exception amazonS3Exception) { Console.WriteLine("S3 error occurred. Exception: " + amazonS3Exception.ToString()); } catch (Exception e) { Console.WriteLine("Exception: " + e.ToString()); } } static void PutLifeCycleConfiguration(LifecycleConfiguration configuration) { PutLifecycleConfigurationRequest request = new PutLifecycleConfigurationRequest { BucketName = bucketName, Configuration = configuration }; var response = client.PutLifecycleConfiguration(request); } static LifecycleConfiguration GetLifeCycleConfiguration() { GetLifecycleConfigurationRequest request = new GetLifecycleConfigurationRequest { BucketName = bucketName }; var response = client.GetLifecycleConfiguration(request); var configuration = response.Configuration; return configuration; } static void DeleteLifecycleConfiguration() { DeleteLifecycleConfigurationRequest request = new DeleteLifecycleConfigurationRequest { BucketName = bucketName }; client.DeleteLifecycleConfiguration(request); } } }