このトピックでは、ライフサイクルルールを管理する方法について説明します。

OSS を使用して、ストレージコストを削減するためのライフサイクルルールを設定します。 ライフサイクル管理ルールは、期限切れのオブジェクトやフラグメントの自動削除、あるいは期限切れになるオブジェクトのストレージクラスから低頻度アクセスへの変換に使用できます。 各ルールは次のとおりです。

  • ルール ID: ルールを識別します。 バケット内の各ルール ID が一意であることを確認します。
  • ポリシー: 以下の設定方法を使用してポリシーを設定します。 バケットに設定できるメソッドは 1 つだけです。
    • プレフィックスで設定: この方法により複数のルールを作成できます。 各プレフィックスが一意であることを確認します。
    • バケット全体を設定: この方法で設定できるルールは 1 つだけです。
  • 期限切れ: 次の設定方法で設定できます。
    • 日数「N」の設定: オブジェクトの最終変更時刻からの「N」日後、オブジェクトは削除されます。
    • 日付による設定: オブジェクトが作成される前の日付を指定します。 オブジェクトが指定した日付より前に作成された場合、オブジェクトは削除されます。
  • ステータス: ライフサイクルルールが有効もしくは無効

uploadPart メソッドによってアップロードされたパーツもライフサイクルルールをサポートします。 オブジェクトの最終変更時刻は、マルチパートアップロードイベントが開始された時刻です。

ライフサイクル管理の詳細については、「オブジェクトライフサイクルの管理」をご参照ください。

ライフサイクルルールを設定

次のコードを実行してライフサイクルルールを設定します。

// This example uses endpoint China (Hangzhou). Specify the actual endpoint based on your requirements.
String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
// It is highly risky to log on with AccessKey of an Alibaba Cloud account because the account has permissions on all the APIs in OSS. We recommend that you log on as a RAM user to access APIs or perform routine operations and maintenance. To create a RAM account, log on to https://ram.console.aliyun.com.
String accessKeyId = "<yourAccessKeyId>";
String accessKeySecret = "<yourAccessKeySecret>";
String bucketName = "<yourBucketName>";

// Create an OSSClient instance.
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);

SetBucketLifecycleRequest request = new SetBucketLifecycleRequest(bucketName);

// Configure the rule ID and object name prefix.
String ruleId0 = "rule0";
String matchPrefix0 = "A0/";
String ruleId1 = "rule1";
String matchPrefix1 = "A1/";
String ruleId2 = "rule2";
String matchPrefix2 = "A2/";
String ruleId3 = "rule3";
String matchPrefix3 = "A3/";

// Set the expiration duration to 3 days after last modified date.
request.AddLifecycleRule(new LifecycleRule(ruleId0, matchPrefix0, RuleStatus.Enabled, 3));

// Configure expiration date to delete objects that are created before the date.
LifecycleRule rule = new LifecycleRule(ruleId1, matchPrefix1, RuleStatus.Enabled);
rule.setCreatedBeforeDate(DateUtil.parseISO8601Date("2022-10-12T00:00:00.000Z"));
request.AddLifecycleRule(rule);

// Set the expiration duration to 3 days for parts in an object.
rule = new LifecycleRule(ruleId2, matchPrefix2, RuleStatus.Enabled);
LifecycleRule.AbortMultipartUpload abortMultipartUpload = new LifecycleRule.AbortMultipartUpload();
abortMultipartUpload.setExpirationDays(3);
rule.setAbortMultipartUpload(abortMultipartUpload);
request.AddLifecycleRule(rule);

// Configure expiration date to delete parts that are created before the date.
rule = new LifecycleRule(ruleId3, matchPrefix3, RuleStatus.Enabled);
abortMultipartUpload = new LifecycleRule.AbortMultipartUpload();
abortMultipartUpload.setCreatedBeforeDate(DateUtil.parseISO8601Date("2022-10-12T00:00:00.000Z"));
rule.setAbortMultipartUpload(abortMultipartUpload);
request.AddLifecycleRule(rule);

ossClient.setBucketLifecycle(request);

// Close your OSSClient.
ossClient.shutdown();

ライフサイクルルールの表示

ライフサイクルルールを表示するには、次のコードを実行します。

// This example uses endpoint China (Hangzhou). Specify the actual endpoint based on your requirements.
String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
// It is highly risky to log on with AccessKey of an Alibaba Cloud account because the account has permissions on all the APIs in OSS. We recommend that you log on as a RAM user to access APIs or perform routine operations and maintenance. To create a RAM account, log on to https://ram.console.aliyun.com.
String accessKeyId = "<yourAccessKeyId>";
String accessKeySecret = "<yourAccessKeySecret>";
String bucketName = "<yourBucketName>";

// Create an OSSClient instance.
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);

List<LifecycleRule> rules = ossClient.getBucketLifecycle(bucketName);
for (LifecycleRule rule : rules) {
    System.out.println(image.getImageId())。
    System.out.println(rule.getPrefix());
    System.out.println(rule.getExpirationDays());
    System.out.println(rule.getCreatedBeforeDate());
    if(rule.hasAbortMultipartUpload()) {
		System.out.println(rule.getAbortMultipartUpload().getExpirationDays());
		System.out.println(rule.getAbortMultipartUpload().getCreatedBeforeDate());
    }
}

// Close your OSSClient.
ossClient.shutdown();

ライフサイクルルールの削除

ライフサイクルルールを削除するには、次のコードを実行します。

// This example uses endpoint China (Hangzhou). Specify the actual endpoint based on your requirements.
String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
// It is highly risky to log on with AccessKey of an Alibaba Cloud account because the account has permissions on all the APIs in OSS. We recommend that you log on as a RAM user to access APIs or perform routine operations and maintenance. To create a RAM account, log on to https://ram.console.aliyun.com.
String accessKeyId = "<yourAccessKeyId>";
String accessKeySecret = "<yourAccessKeySecret>";
String bucketName = "<yourBucketName>";

// Create an OSSClient instance.
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);

ossClient.deleteBucketLifecycle(bucketName);

// Close your OSSClient.
ossClient.shutdown();