すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:ライフサイクルルール

最終更新日:Mar 05, 2024

Object Storage Service (OSS) にアップロードされた一部のデータは、頻繁にアクセスされない場合がありますが、コンプライアンスまたはアーカイブ要件のため、コールドストレージに保存する必要があります。 ストレージコストを削減するために、バッチで不要になったデータを削除することができます。 この場合、オブジェクトの最終変更時刻に基づいてライフサイクルルールを設定し、オブジェクトのストレージクラスをホットからコールドに定期的に変更したり、オブジェクトを削除してストレージコストを削減したりできます。

使用上の注意

  • ライフサイクルルールを設定するには、oss:PutBucketLifecycle権限が必要です。 ライフサイクルルールをクエリするには、oss:GetBucketLifecycle権限が必要です。 ライフサイクルルールを削除するには、oss:DeleteBucketLifecycle権限が必要です。 詳細については、「RAMユーザーへのカスタムポリシーのアタッチ」をご参照ください。

  • このトピックのサンプルコードを実行する前に、カスタムドメイン名やSecurity Token Service (STS) などの方法を使用してOSSClientインスタンスを作成する必要があります。 詳細については、「初期化」をご参照ください。

バケットのライフサイクルルールの設定

次のサンプルコードは、examplebucketという名前のバケットのオブジェクトの最終変更時刻に基づいてライフサイクルルールを設定する方法の例を示しています。 ライフサイクルルールを変更するには、「1つ以上のライフサイクルルールの設定を変更する方法」の手順に従います。

PutBucketLifecycleRequest request = new PutBucketLifecycleRequest();
request.setBucketName("examplebucket");

BucketLifecycleRule rule1=新しいBucketLifecycleRule();
// ルールに一致するオブジェクトの名前に含まれるルールIDとプレフィックスを指定します。 
rule1.setIdentifier("1");
rule1.setPrefix("A");
// ライフサイクルルールを実行するかどうかを指定します。 このパラメーターがtrueに設定されている場合、OSSはこのルールを定期的に実行します。 このパラメーターがfalseに設定されている場合、OSSはこのルールを無視します。 
rule1.setStatus(true);
// オブジェクトが最後に変更されてから200日後に期限切れになるように指定します。 
rule1.setDays("200");
// オブジェクトのストレージクラスが最後に変更されてから30日後にアーカイブに変換されるように指定します。
rule1.setArchiveDays("30");
// アップロードに失敗してから3日後に期限切れになるように指定します。 
rule1.setMultipartDays("3");
// オブジェクトのストレージクラスが最後に変更されてから15日後に低頻度アクセス (IA) に変換されるように指定します。 
rule1.setIADays("15");

BucketLifecycleRule rule2=新しいBucketLifecycleRule();
rule2.setIdentifier("2");
rule2.setPrefix("B");
rule2.setStatus(true);
rule2.setDays("300");
rule2.setArchiveDays("30");
rule2.setMultipartDays("3");
rule2.setIADays("15");

ArrayList<BucketLifecycleRule> lifecycleRules = new ArrayList<BucketLifecycleRule>();
lifecycleRules.add(rule1);
lifecycleRules.add(rule2);
request.setLifecycleRules(lifecycleRules);
OSSAsyncTask task = oss.asyncPutBucketLifecycle(request, new OSSCompletedCallback<PutBucketLifecycleRequest, PutBucketLifecycleResult>() {
    @オーバーライド
    public void onSuccess(PutBucketLifecycleRequestリクエスト, PutBucketLifecycleResult結果) {
        OSSLog.logInfo("code::" + result.getStatusCode());

    }

    @オーバーライド
    public void onFailure(PutBucketLifecycleRequest request, ClientException clientException, ServiceException serviceException) {
        OSSLog.logError("error: " + serviceException.getRawMessage());

    }
});

task.waitUntilFinished(); 

バケットのライフサイクルルールの照会

次のコードは、examplebucketという名前のバケットに設定されたライフサイクルルールを照会する方法の例を示しています。

GetBucketLifecycleRequest request = new GetBucketLifecycleRequest();
request.setBucketName("examplebucket");
OSSAsyncTask task = oss.asyncGetBucketLifecycle(request, new OSSCompletedCallback<GetBucketLifecycleRequest, GetBucketLifecycleResult>() {
    @オーバーライド
    public void onSuccess(GetBucketLifecycleRequestリクエスト, GetBucketLifecycleResult結果) {
         ArrayListBucketLifecycleRule> list = result.getlifecycleRules();
         for (BucketLifecycleRule rule : list){
             OSSLog.logInfo("info: " + rule.getIdentifier());
         }
    }

    @オーバーライド
    public void onFailure(GetBucketLifecycleRequest request, ClientException clientException, ServiceException serviceException) {
        OSSLog.logError("error: " + serviceException.getRawMessage());

    }
});
task.waitUntilFinished(); 

バケットのライフサイクルルールの削除

次のコードは、examplebucketという名前のバケットのライフサイクルルールをクリアする方法の例を示しています。 1つ以上のライフサイクルルールを削除する場合は、「バケットに設定されている1つ以上のライフサイクルルールを削除する方法」を参照してください。.

DeleteBucketLifecycleRequest request = new DeleteBucketLifecycleRequest();
request.setBucketName("examplebucket");
OSSAsyncTask task = oss. asyncDeleBucketLifecycle (request,"examplebucket" new OSSCompletedCallback<DeleteBucketLifecycleRequest, DeleteBucketLifecycleResult>() {
    @オーバーライド
    public void onSuccess(DeleteBucketLifecycleRequest request, DeleteBucketLifecycleResult result) {
        OSSLog.logInfo("code : " + result.getStatusCode());

    }

    @オーバーライド
    public void onFailure(DeleteBucketLifecycleRequest request, ClientException clientException, ServiceException serviceException) {
        OSSLog.logError("error: " + serviceException.getRawMessage());

    }
});
task.waitUntilFinished(); 

参考資料

  • ライフサイクルルールの管理に使用される完全なサンプルコードについては、『GitHub』をご参照ください。

  • ライフサイクルルールを設定するために呼び出すことができるAPI操作の詳細については、「PutBucketLifecycle」をご参照ください。

  • ライフサイクルルールを照会するために呼び出すAPI操作の詳細については、「GetBucketLifecycle」をご参照ください。

  • ライフサイクルルールを削除するために呼び出すことができるAPI操作の詳細については、「DeleteBucketLifecycle」をご参照ください。

  • OSSClientインスタンスを初期化する方法の詳細については、「初期化」をご参照ください。