アーカイブ、コールドアーカイブ、ディープコールドアーカイブのストレージクラスにあるオブジェクトは、読み取る前に解凍する必要があります。オブジェクトが解凍されると、オブジェクトの一時的なコピーが作成されます。元のアーカイブ済みオブジェクトは保持されます。解凍状態の保持期間が終了すると、一時的なコピーは自動的に削除されます。このトピックでは、OSS Harmony ソフトウェア開発キット (SDK) を使用して、アーカイブ、コールドアーカイブ、ディープコールドアーカイブのオブジェクトを解凍する方法について説明します。
注意事項
アーカイブ、コールドアーカイブ、ディープコールドアーカイブのストレージクラスのオブジェクトのみが RestoreObject メソッドをサポートします。
OSS がサポートするリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。
オブジェクトを解凍するには、
oss:RestoreObject権限が必要です。詳細については、「RAM ユーザーへのカスタム権限の付与」をご参照ください。
サンプルコード
次のコードを使用して、アーカイブ、コールドアーカイブ、またはディープコールドアーカイブのオブジェクトを解凍します。
import Client, { RequestError } from '@aliyun/oss';
// OSS クライアントインスタンスを作成します。
const client = new Client({
// STS の一時的なアクセス認証情報の Access Key ID と置き換えます。
accessKeyId: 'yourAccessKeyId',
// STS の一時的なアクセス認証情報の Access Key Secret と置き換えます。
accessKeySecret: 'yourAccessKeySecret',
// STS の一時的なアクセス認証情報の Security Token と置き換えます。
securityToken: 'yourSecurityToken',
// バケットが配置されているリージョンを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、Region を oss-cn-hangzhou に設定します。
region: 'oss-cn-hangzhou',
});
// バケットの名前を指定します。 実際のバケット名に置き換えてください。
const bucket = 'yourBucketName';
// 解凍するオブジェクトの名前を指定します。 実際のオブジェクト名に置き換えてください。
const key = 'yourObjectName';
/**
* アーカイブ済みオブジェクトを解凍します。
* restoreObject メソッドを使用して、アーカイブまたはコールドアーカイブのストレージクラスからオブジェクトを解凍し、読み取り可能な状態にします。
*/
const restoreObject = async () => {
try {
// restoreObject メソッドを呼び出して、指定されたバケット内のアーカイブ済みオブジェクトを解凍します。
const res = await client.restoreObject({
bucket, // バケットの名前。
key, // オブジェクトの名前。
restoreRequest: {
days: 2, // 解凍されたオブジェクトを有効にしておく日数。
},
});
// 解凍結果を出力します。
console.log(JSON.stringify(res));
} catch (err) {
// リクエスト中に発生した例外をキャッチします。
if (err instanceof RequestError) {
// エラーが既知のタイプである場合は、エラーコード、エラーメッセージ、リクエスト ID、ステータスコード、EC コードを出力します。
console.log('code: ', err.code); // エラーコード。
console.log('message: ', err.message); // エラーメッセージ。
console.log('requestId: ', err.requestId); // リクエスト ID。
console.log('status: ', err.status); // HTTP ステータスコード。
console.log('ec: ', err.ec); // エラーコード。
} else {
// その他の不明なタイプのエラーを出力します。
console.log('unknown error: ', err);
}
}
};
// restoreObject 関数を呼び出して、アーカイブ済みオブジェクトを解凍します。
restoreObject();
関連ドキュメント
オブジェクトの解凍方法の詳細については、「オブジェクトの解凍」をご参照ください。