すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:オブジェクトの削除

最終更新日:Feb 22, 2024

一度に1つ以上のオブジェクトを削除したり、指定されたプレフィックスを名前に含むオブジェクトを削除したり、指定されたディレクトリとそのディレクトリ内のすべてのオブジェクトを削除したりできます。

警告

削除したオブジェクトを元に戻すことはできません。 オブジェクトを削除するときは注意してください。

単一のオブジェクトの削除

次のサンプルコードは、examplebucketバケットからexampleobject.txtオブジェクトを削除する方法の例を示しています。

const OSS = require('ali-OSS ');

const client = new OSS({
  // バケットが配置されているリージョンを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンをoss-cn-Hangzhouに設定します。 
  リージョン: '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、
  // バケットの名前を指定します。 
  bucket: 'examplebucket' 、});

async関数deleteObject() {
  try {
    // オブジェクトのフルパスを指定します。 バケット名をフルパスに含めないでください。 
    const result = await client.delete('exampleobject.txt ');
    console.log (結果);
  } catch (エラー) {
    console.log (エラー);
  }
}

deleteObject();

一度に複数のオブジェクトを削除する

一度に最大1,000個のオブジェクトを削除できます。 複数の指定されたオブジェクト、指定されたプレフィックスを含む名前のオブジェクト、または指定されたディレクトリとディレクトリ内のすべてのオブジェクトを削除できます。

複数のオブジェクトを削除すると、次のいずれかのモードで結果を返すことができます。

  • verbose: 応答には、削除されたすべてのオブジェクトに関する情報を含むメッセージ本文が含まれます。 デフォルトでは、このモードが使用されます。

  • quiet: 応答にメッセージ本文は含まれていません。

ライフサイクルルールを設定して、オブジェクトを自動的に削除することもできます。 詳細については、「最終変更時刻に基づくライフサイクルルール」をご参照ください。

複数の指定オブジェクトの削除

次のサンプルコードは、指定した複数のオブジェクトを削除する方法の例を示します。

const OSS = require('ali-OSS ');

const client = new OSS({
  // バケットが配置されているリージョンを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンをoss-cn-Hangzhouに設定します。 
  リージョン: '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、
  // バケットの名前を指定します。 
  bucket: 'examplebucket' 、});

async関数deleteMulti() {
  try {
    // 削除するオブジェクトのフルパスを指定し、結果モードをverboseに設定します。 完全なパスにバケット名を含めないでください。 
    // let result = await client.de leteMulti(['exampleobject-1 ', 'exampleobject-2', 'testfolder/sampleobject.txt ']);
    // console.log (結果);
    // 削除するオブジェクトのフルパスを指定し、結果モードをquietに設定します。 完全なパスにバケット名を含めないでください。 
    const result = await client.de leteMulti(['exampleobject-1 ', 'exampleobject-2', 'testfolder/sampleobject.txt '], {quiet: true});
    console.log (結果);
  } catch (エラー) {
    console.log (エラー);
  }
}

deleteMulti();

指定されたオブジェクト名プレフィックスまたは指定されたディレクトリ内の複数のオブジェクトを削除する

次のサンプルコードでは、指定した名前プレフィックスを持つ複数のオブジェクトを削除する方法と、指定したディレクトリとそのディレクトリ内のすべてのオブジェクトを削除する方法の例を示します。

警告

プレフィックスが指定されていないか、次のコードでNULLに設定されている場合、バケット内のすべてのオブジェクトが削除されます。 削除操作でプレフィックスを指定するときは注意してください。

const OSS = require('ali-OSS ');

const client = new OSS({
  // バケットが配置されているリージョンを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンをoss-cn-Hangzhouに設定します。 
  リージョン: '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、
  // バケットの名前を指定します。 
  bucket: 'examplebucket' 、});

// リクエストの失敗を処理し、promise.allの中断を防ぎ、失敗の原因と削除に失敗したオブジェクトの名前を返します。 
async関数handleDel(name) {
  try {
    client.de lete(name) を待っています。
  } catch (エラー) {
    error.failObjectName = name;
    戻りエラー。
  }
}

// 一度に複数のオブジェクトを削除します。 
async関数deletePrefix(prefix) {
  const list = await client.list({
    prefix: prefix,
  });

  list.objects = list.objects | | [];
  const result = await Promise.all(list.objects.map((v) => handleDe l(v.name)));
  console.log (結果);
}
// 削除するオブジェクトの名前にプレフィックスを指定します。 たとえば、名前にsrcプレフィックスが含まれるすべてのオブジェクトを削除する場合は、プレフィックスをsrcに設定します。 プレフィックスをsrcに設定すると、srcプレフィックス、srcディレクトリ、およびsrcディレクトリ内のすべてのオブジェクトを含む名前のディレクトリ以外のすべてのオブジェクトが削除されます。 
deletePrefix('src');
// srcディレクトリとディレクトリ内のすべてのオブジェクトのみを削除する場合は、プレフィックスをsrc /に設定します。 
// deletePrefix('src/');

参考資料

  • 一度に1つまたは複数のオブジェクトを削除するために使用される完全なサンプルコードについては、GitHubをご参照ください。

  • オブジェクトを削除するために呼び出すことができるAPI操作の詳細については、「DeleteObject」をご参照ください。

  • 複数のオブジェクトを削除するために呼び出すことができるAPI操作の詳細については、「DeleteMultipleObjects」をご参照ください。