このトピックでは、単一のオブジェクト、指定された複数のオブジェクト、特定の名前のプレフィックスを持つオブジェクト、またはディレクトリとその中のすべてのオブジェクトを削除する方法について説明します。
削除操作は慎重に実行してください。削除されたオブジェクトは回復できません。
単一ファイルの削除
次のコードは、examplebucket バケットから exampleobject.txt オブジェクトを削除する方法を示しています。
const OSS = require('ali-oss');
const client = new OSS({
// バケットが配置されているリージョンを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合、Region を oss-cn-hangzhou に設定します。
region: 'oss-cn-hangzhou',
// 環境変数からアクセス認証情報を取得します。このコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
authorizationV4: true,
// バケット名を指定します。
bucket: 'examplebucket',
});
async function deleteObject() {
try {
// オブジェクトの完全なパスを指定します。完全なパスにバケット名を含めることはできません。
const result = await client.delete('exampleobject.txt');
console.log(result);
} catch (error) {
console.log(error);
}
}
deleteObject();
ファイルのバッチ削除
一度に最大 1,000 個のオブジェクトを手動で削除できます。指定した複数のオブジェクト、指定したプレフィックスを持つオブジェクト、またはディレクトリとその中のすべてのオブジェクトを削除できます。
バッチ削除操作の応答には、2 つのモードがあります:
詳細モード:OSS からのレスポンス本文には、削除された各オブジェクトの結果が含まれます。これはデフォルトのモードです。
簡易モード:OSS はレスポンス本文を返しません。
OSS は、ライフサイクルルールを設定することで、オブジェクトの自動削除もサポートしています。詳細については、「最終更新時間に基づくライフサイクルルール」をご参照ください。
指定した名前の複数オブジェクトの削除
次のコードは、指定した名前の複数のオブジェクトを削除する方法を示しています。
const OSS = require('ali-oss');
const client = new OSS({
// バケットが配置されているリージョンを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合、Region を oss-cn-hangzhou に設定します。
region: 'oss-cn-hangzhou',
// 環境変数からアクセス認証情報を取得します。このコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
authorizationV4: true,
// バケット名を指定します。
bucket: 'examplebucket',
});
async function deleteMulti() {
try {
// 削除するオブジェクトの完全なパスを指定し、応答モードを詳細モードに設定します。完全なパスにバケット名を含めることはできません。
// let result = await client.deleteMulti(['exampleobject-1', 'exampleobject-2', 'testfolder/sampleobject.txt']);
// console.log(result);
// 削除するオブジェクトの完全なパスを指定し、応答モードを簡易モードに設定します。完全なパスにバケット名を含めることはできません。
const result = await client.deleteMulti(['exampleobject-1', 'exampleobject-2', 'testfolder/sampleobject.txt'], {quiet: true});
console.log(result);
} catch (error) {
console.log(error);
}
}
deleteMulti();
指定したプレフィックスを持つ複数オブジェクトまたはディレクトリ内の複数オブジェクトの削除
次のコードは、指定したプレフィックスを持つ複数のオブジェクト、またはディレクトリとその中のすべてのオブジェクトを削除する方法を示しています。
次のサンプルコードの prefix パラメーターの値が空の文字列または NULL の場合、バケット内のすべてのオブジェクトが削除されます。このパラメーターを使用する際は、十分にご注意ください。
const OSS = require('ali-oss');
const client = new OSS({
// バケットが配置されているリージョンを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合、Region を oss-cn-hangzhou に設定します。
region: 'oss-cn-hangzhou',
// 環境変数からアクセス認証情報を取得します。このコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
authorizationV4: true,
// バケット名を指定します。
bucket: 'examplebucket',
});
// 失敗したリクエストを処理して、Promise.all が中断されないようにし、失敗の理由と失敗したファイル名を返します。
async function handleDel(name) {
try {
await client.delete(name);
} catch (error) {
error.failObjectName = name;
return error;
}
}
// 複数のファイルを削除します。
async function deletePrefix(prefix) {
const list = await client.list({
prefix: prefix,
});
list.objects = list.objects || [];
const result = await Promise.all(list.objects.map((v) => handleDel(v.name)));
console.log(result);
}
// 'src' プレフィックスを持つすべてのオブジェクトを削除するには、prefix を 'src' に設定します。これにより、'src_file.txt' などのファイル、'src' フォルダ、および 'src' フォルダ内のすべてのファイルが削除されます。
deletePrefix('src');
// 'src' フォルダとその中のすべてのファイルのみを削除するには、prefix を 'src/' に設定します。
// deletePrefix('src/');
リファレンス
ファイルまたは複数のファイルを削除する方法を示す完全なサンプルコードについては、GitHub の例をご参照ください。
単一ファイルを削除するための API リファレンスについては、「DeleteObject」をご参照ください。
複数ファイルを削除するための API リファレンスについては、「DeleteMultipleObjects」をご参照ください。