Object Storage Service (OSS) にアップロードされたデータの中には、アクセス頻度は低いものの、コンプライアンスやアーカイブの要件によりコールドストレージに保存する必要があるものがあります。不要になったデータを一括で削除して、ストレージコストを削減したい場合があるかもしれません。このような場合、オブジェクトの最終更新日時にもとづいてライフサイクルルールを設定し、オブジェクトのストレージクラスを定期的にホットからコールドに変更したり、オブジェクトを削除したりすることで、ストレージコストを削減できます。
注意事項
オブジェクトの最終更新日時にもとづいてライフサイクルルールを設定する前に、この機能についてよく理解しておいてください。詳細については、「最終更新日時にもとづくライフサイクルルール」をご参照ください。
ライフサイクルルールを設定するには
oss:PutBucketLifecycle権限、ライフサイクルルールを表示するにはoss:GetBucketLifecycle権限、すべてのライフサイクルルールを削除するにはoss:DeleteBucketLifecycle権限が必要です。詳細については、「RAM ユーザーへのカスタムアクセスポリシーの付与」をご参照ください。このトピックのサンプルコードを実行する前に、カスタムドメイン名や Security Token Service (STS) を使用するなどの方法で OSSClient インスタンスを作成する必要があります。詳細については、「初期化 (Android SDK)」をご参照ください。
バケットのライフサイクルルールの設定
次のサンプルコードは、examplebucket という名前のバケットに対して、オブジェクトの最終更新日時にもとづくライフサイクルルールを設定する方法の例を示しています。ライフサイクルルールを変更するには、「1 つ以上のライフサイクルルールの設定を変更する方法」をご参照ください。
PutBucketLifecycleRequest request = new PutBucketLifecycleRequest();
request.setBucketName("examplebucket");
BucketLifecycleRule rule1 = new 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 = new 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>() {
@Override
public void onSuccess(PutBucketLifecycleRequest request, PutBucketLifecycleResult result) {
OSSLog.logInfo("code::"+result.getStatusCode());
}
@Override
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>() {
@Override
public void onSuccess(GetBucketLifecycleRequest request, GetBucketLifecycleResult result) {
ArrayList<BucketLifecycleRule> list = result.getlifecycleRules();
for (BucketLifecycleRule rule : list){
OSSLog.logInfo("info: " + rule.getIdentifier());
}
}
@Override
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.asyncDeleteBucketLifecycle(request,"examplebucket" new OSSCompletedCallback<DeleteBucketLifecycleRequest, DeleteBucketLifecycleResult>() {
@Override
public void onSuccess(DeleteBucketLifecycleRequest request, DeleteBucketLifecycleResult result) {
OSSLog.logInfo("code : "+result.getStatusCode());
}
@Override
public void onFailure(DeleteBucketLifecycleRequest request, ClientException clientException, ServiceException serviceException) {
OSSLog.logError("error: "+serviceException.getRawMessage());
}
});
task.waitUntilFinished();関連ドキュメント
ライフサイクルルールを管理するために使用される完全なサンプルコードについては、GitHub をご参照ください。
ライフサイクルルールを設定するために呼び出すことができる API 操作の詳細については、「PutBucketLifecycle」をご参照ください。
ライフサイクルルールをクエリするために呼び出すことができる API 操作の詳細については、「GetBucketLifecycle」をご参照ください。
ライフサイクルルールを削除するために呼び出すことができる API 操作の詳細については、「DeleteBucketLifecycle」をご参照ください。
OSSClient インスタンスを初期化する方法の詳細については、「初期化」をご参照ください。