Archiveオブジェクトのリアルタイムアクセスを有効にしない場合、Archiveオブジェクトは復元した後にのみアクセスできます。 object Storage Service (OSS) コンソールを使用して、毎回1つのオブジェクトのみを復元できます。 OSSコンソールを使用して、ディレクトリ内の複数のオブジェクトを一度に復元することはできません。 一度に複数のオブジェクトを復元するには、他の方法を使用できます。 このトピックでは、一度に複数のオブジェクトを復元する方法について説明します。
解決策
バケット内の複数のオブジェクトを一度に復元するには、次の手順を実行します。
1. すべてのオブジェクトを一覧表示します。
バケット内のオブジェクトを一覧表示するには、バケットインベントリ機能を使用することを推奨します。 詳細については、「バケットインベントリ」をご参照ください。
ListObjects操作を呼び出してオブジェクトを一覧表示することもできます。 ただし、この操作では、在庫ベースのリストよりも高い料金が発生します。 詳細については、「オブジェクトのリスト」および「API操作呼び出し料金」をご参照ください。
2. バケットインベントリ機能を使用してオブジェクトをリストする場合、返されたインベントリリストでStorageClassがArchiveであるオブジェクトをフィルタリングし、バケット名を除くオブジェクトの完全なパスを記録します。
OSS SDKを使用してオブジェクトを一覧表示する場合は、KeyとStorageClassの組み合わせを使用して、オブジェクトのパスとそのストレージクラスを取得します。 次のサンプルコードは、"s" オブジェクトのパスとそのストレージクラスを返します。
System.out.println("fileurl" + s.getKey()+ "&stu:" + s.getStorageClass());
3. 対応するパス内のオブジェクトを一度に復元します。 次のいずれかの方法を使用して、一度に複数のオブジェクトを復元できます。 詳細については、「オブジェクトの復元」をご参照ください。
ossutil: 他の2つの方法と比較して、コマンドライン操作に精通している場合、ossutilはよりシンプルで効率的に使用できます。
OSS SDK: ossutilと比較して、OSS SDKの使用はより複雑で、コードの読み取りと変更が必要です。 コードはコンパイルされ、ローカルデバイスで実行されます。 ただし、OSS SDKはコードの再利用性が向上します。 このトピックの後半では、OSS SDK for Javaを使用して一度に複数のオブジェクトを復元する方法を示すコードサンプルを提供します。
OSS API: OSS APIは、一度に複数のオブジェクトを復元するAPI操作を提供しません。 復元する各オブジェクトに対してRestoreObject操作を呼び出す必要があります。 操作を呼び出すときに署名を計算するコードを記述する必要があります。 アプリケーションで高度なカスタマイズが必要な場合は、OSS APIを使用することを推奨します。