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