メニュー
Amazon Simple Storage Service
開発者ガイド (API Version 2006-03-01)

AWS SDK for Java を使用したオブジェクトのライフサイクルの管理

AWS SDK for Java を使用して、バケットのライフサイクル設定を管理できます。ライフサイクル設定の管理の詳細については、「オブジェクトのライフサイクル管理」を参照してください。

このトピックのコード例では、次の処理が実行されます。

  • 次の 2 つのルールを含むライフサイクル設定を追加します。

    • glacierobjects/ キー名のプレフィックスが付いているオブジェクトに適用されるルール。このルールでは、オブジェクトを GLACIER ストレージクラスに転送するよう Amazon S3 に指示する移行アクションを指定します。指定された日数が 0 日であるため、オブジェクトは直ちにアーカイブの対象になります。

    • タグキー archive および値 true を持つタグが付与されたオブジェクトに適用されるルール。このルールでは 2 つの移行アクションを指定します。最初に、作成後 30 日目にオブジェクトを STANDARD_IA(IA、小頻度アクセス頻繁)ストレージクラスに移行し、次に作成後 365 日目に GLACIER ストレージクラスに移行するよう Amazon S3 に指示します。また、作成後 3650 日目にこれらのオブジェクトを削除するよう Amazon S3 に指示する失効アクションも指定します。

  • ライフサイクル設定を取得します。

  • YearlyDocuments/ キー名のプレフィックスが付いているオブジェクトに適用する別のルールを追加して設定を更新します。このルールの失効アクションでは、作成後 3650 日目にこれらのオブジェクトを削除するよう 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()); } } }