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

AWS SDK for Java를 사용하여 객체 수명 주기 관리

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

이 항목의 예제 코드는 다음을 수행합니다.

  • 다음 두 가지 규칙이 포함된 수명 주기 구성을 추가합니다.

    • 키 이름 접두사가 glacierobjects/인 객체에 적용되는 규칙. 이 규칙은 Amazon S3에 객체를 GLACIER 스토리지 클래스로 전환하도록 요구하는 전환 작업을 지정합니다. 지정된 일수가 0이므로 객체를 즉시 보관할 수 있습니다.

    • 태그 키 archive와 값 true인 태그를 가진 객체에 적용되는 규칙. 이 규칙은 Amazon S3에 생성 후 30일이 지나면 객체를 STANDARD_IA(IA, 자주 액세스하지 않는 경우) 스토리지 클래스로 전환한 다음 365일이 지나면 GLACIER 스토리지 클래스로 전환하도록 요청하는 두 전환 작업을 지정합니다. 또한 이 규칙은 생성 후 3,650일이 지나면 객체를 삭제하도록 Amazon S3에 요청하는 만료 작업을 지정합니다.

  • 수명 주기 구성을 검색합니다.

  • 키 이름 접두사가 YearlyDocuments/인 객체에 적용되는 다른 규칙을 추가하여 구성을 업데이트합니다. 이 규칙의 만료 작업은 생성 후 3,650일이 지나면 객체를 삭제하도록 Amazon S3에 요청합니다.

    참고

    버킷에 수명 주기 구성을 추가하면 기존 수명 주기 구성이 대체됩니다. 기존 수명 주기 구성을 업데이트하려면 먼저 기존 수명 주기 구성을 검색하여 수정한 후, 수정한 수명 주기 구성을 버킷에 추가해야 합니다.

예 Java 코드 예

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

실제 예제를 작성하여 테스트하는 방법에 대한 자세한 내용은 Java 코드 예제 테스트 단원을 참조하십시오.

Copy
import java.io.IOException; import java.util.Arrays; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.services.s3.AmazonS3Client; import com.amazonaws.services.s3.model.AmazonS3Exception; import com.amazonaws.services.s3.model.BucketLifecycleConfiguration; import com.amazonaws.services.s3.model.BucketLifecycleConfiguration.Transition; import com.amazonaws.services.s3.model.StorageClass; import com.amazonaws.services.s3.model.Tag; import com.amazonaws.services.s3.model.lifecycle.LifecycleAndOperator; import com.amazonaws.services.s3.model.lifecycle.LifecycleFilter; import com.amazonaws.services.s3.model.lifecycle.LifecyclePrefixPredicate; import com.amazonaws.services.s3.model.lifecycle.LifecycleTagPredicate; public class LifecycleConfiguration { public static String bucketName = "*** Provide bucket name ***"; public static AmazonS3Client s3Client; public static void main(String[] args) throws IOException { s3Client = new AmazonS3Client(new ProfileCredentialsProvider()); try { BucketLifecycleConfiguration.Rule rule1 = new BucketLifecycleConfiguration.Rule() .withId("Archive immediately rule") .withFilter(new LifecycleFilter( new LifecyclePrefixPredicate("glacierobjects/"))) .addTransition(new Transition() .withDays(0) .withStorageClass(StorageClass.Glacier)) .withStatus(BucketLifecycleConfiguration.ENABLED.toString()); BucketLifecycleConfiguration.Rule rule2 = new BucketLifecycleConfiguration.Rule() .withId("Archive and then delete rule") .withFilter(new LifecycleFilter( new LifecycleTagPredicate(new Tag("archive", "true")))) .addTransition(new Transition() .withDays(30) .withStorageClass(StorageClass.StandardInfrequentAccess)) .addTransition(new Transition() .withDays(365) .withStorageClass(StorageClass.Glacier)) .withExpirationInDays(3650) .withStatus(BucketLifecycleConfiguration.ENABLED.toString()); BucketLifecycleConfiguration configuration = new BucketLifecycleConfiguration() .withRules(Arrays.asList(rule1, rule2)); // Save configuration. s3Client.setBucketLifecycleConfiguration(bucketName, configuration); // Retrieve configuration. configuration = s3Client.getBucketLifecycleConfiguration(bucketName); // Add a new rule. configuration.getRules().add( new BucketLifecycleConfiguration.Rule() .withId("NewRule") .withFilter(new LifecycleFilter( new LifecycleAndOperator(Arrays.asList( new LifecyclePrefixPredicate("YearlyDocuments/"), new LifecycleTagPredicate(new Tag("expire_after", "ten_years")))))) .withExpirationInDays(3650) .withStatus(BucketLifecycleConfiguration. ENABLED.toString()) ); // Save configuration. s3Client.setBucketLifecycleConfiguration(bucketName, configuration); // Retrieve configuration. configuration = s3Client.getBucketLifecycleConfiguration(bucketName); // Verify there are now three rules. configuration = s3Client.getBucketLifecycleConfiguration(bucketName); System.out.format("Expected # of rules = 3; found: %s\n", configuration.getRules().size()); System.out.println("Deleting lifecycle configuration. Next, we verify deletion."); // Delete configuration. s3Client.deleteBucketLifecycleConfiguration(bucketName); // Retrieve nonexistent configuration. configuration = s3Client.getBucketLifecycleConfiguration(bucketName); String s = (configuration == null) ? "No configuration found." : "Configuration found."; System.out.println(s); } catch (AmazonS3Exception amazonS3Exception) { System.out.format("An Amazon S3 error occurred. Exception: %s", amazonS3Exception.toString()); } catch (Exception ex) { System.out.format("Exception: %s", ex.toString()); } } }