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

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

最終更新日:Nov 12, 2024

単一のオブジェクト、複数の指定されたオブジェクト、名前に特定のプレフィックスが含まれているオブジェクト、または特定のディレクトリとそのディレクトリ内のすべてのオブジェクトを削除できます。

警告

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

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

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

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

const client = new OSS({
  // Specify the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the region to oss-cn-hangzhou. 
  region: 'oss-cn-hangzhou',
  // Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured. 
  accessKeyId: process.env.OSS_ACCESS_KEY_ID,
  accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
  authorizationV4: true,
  // Specify the name of the bucket. 
  bucket: 'examplebucket',
});

async function deleteObject() {
  try {
    // Specify the full path of the object. Do not include the bucket name in the full path. 
    const result = await client.delete('exampleobject.txt');
    console.log(result);
  } catch (error) {
    console.log(error);
  }
}

deleteObject();

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

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

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

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

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

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

指定した名前の複数のオブジェクトを削除する

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

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

const client = new OSS({
  // Specify the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the region to oss-cn-hangzhou. 
  region: 'oss-cn-hangzhou',
  // Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured. 
  accessKeyId: process.env.OSS_ACCESS_KEY_ID,
  accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
  authorizationV4: true,
  // Specify the name of the bucket. 
  bucket: 'examplebucket',
});

async function deleteMulti() {
  try {
    // Specify the full paths of the objects that you want to delete and set the result mode to verbose. Do not include the bucket name in the full paths. 
    // let result = await client.deleteMulti(['exampleobject-1', 'exampleobject-2', 'testfolder/sampleobject.txt']);
    // console.log(result);
    // Specify the full paths of the objects that you want to delete and set the result mode to quiet. Do not include the bucket name in the full paths. 
    const result = await client.deleteMulti(['exampleobject-1', 'exampleobject-2', 'testfolder/sampleobject.txt'], {quiet: true});
    console.log(result);
  } catch (error) {
    console.log(error);
  }
}

deleteMulti();

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

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

警告

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

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

const client = new OSS({
  // Specify the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the region to oss-cn-hangzhou. 
  region: 'oss-cn-hangzhou',
  // Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured. 
  accessKeyId: process.env.OSS_ACCESS_KEY_ID,
  accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
  authorizationV4: true,
  // Specify the name of the bucket. 
  bucket: 'examplebucket',
});

// Handle request failures, prevent the interruption of promise.all, and return failure causes and the names of objects that fail to be deleted. 
async function handleDel(name) {
  try {
    await client.delete(name);
  } catch (error) {
    error.failObjectName = name;
    return error;
  }
}

// Delete multiple objects at a time. 
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);
}
// Specify the prefix in the names of the objects that you want to delete. For example, if you want to delete all objects whose names contain the src prefix, set the prefix to src. After you set the prefix to src, all non-directory objects whose names contain the src prefix, the src directory, and all objects in the src directory are deleted. 
deletePrefix('src');
// If you want to delete only the src directory and all objects in the directory, set the prefix to src/. 
// deletePrefix('src/');

関連ドキュメント

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

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

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