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

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

最終更新日:Dec 18, 2023

このトピックでは、バージョン管理が有効なバケットから、単一のオブジェクト、複数のオブジェクト、または名前に指定されたプレフィックスが含まれるオブジェクトを削除する方法について説明します。

バージョン管理が有効なバケットの削除操作

バージョン管理が有効なバケットからオブジェクトを削除する場合、リクエストにバージョンIDを指定するかどうかを決定する必要があります。

  • バージョンIDを指定せずにオブジェクトを削除する (一時削除)

    デフォルトでは、リクエストで削除するオブジェクトのバージョンIDを指定しない場合、OSSはオブジェクトの現在のバージョンを削除せず、最新バージョンとしてオブジェクトに削除マーカーを追加します。 オブジェクトに対してGetObject操作を実行すると、OSSはオブジェクトの現在のバージョンを削除マーカーとして識別し、404 Not Foundを返します。 また、レスポンスには、header:x-oss-delete-marker = trueと、削除マーカーのバージョンidを示すx-oss-version-IDが含まれています。

    x-oss-delete-markerの値がtrueの場合、x-oss-version-idの値は削除マーカーのバージョンIDです。

  • バージョンIDを指定してオブジェクトを削除する (永久削除)

    リクエストで削除するオブジェクトのバージョンIDを指定すると、paramsで指定されたversionIdパラメーターに基づいて、指定されたバージョンのオブジェクトが完全に削除されます。 IDがnullのバージョンを削除するには、params['versionId'] = "null"paramsに追加します。 OSSは、削除するバージョンのIDとして文字列 "null" を識別し、IDがnullのバージョンを削除します。

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

次の例は、バージョン管理が有効なバケットからオブジェクトを永続的または一時的に削除する方法を示しています。

  • バージョン管理が有効なバケットからオブジェクトを完全に削除する

    次のサンプルコードは、リクエストでオブジェクトのバージョンIDを指定して、バージョン管理が有効なバケットからオブジェクトを完全に削除する方法の例を示しています。

    const OSS = require("ali-oss");
    
    const client = new OSS({
      // バケットが配置されているリージョンを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンをoss-cn-Hangzhouに設定します。 
      region: 'yourregion' 、
      // 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 
      accessKeyId: process.env.OSS_ACCESS_KEY_ID、
      accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET、
      // バケットの名前を指定します。 
      bucket: 'yourbucketname'
    });
    
    // オブジェクトのバージョンIDを指定します。 
    const versionId = "versionId";
    // オブジェクトを指定します。 
    const objectName = "exampleobject.txt";
    async関数deleteVersionObject() {
      const result = await client.de lete(objectName, {)
        versionId,
      });
      console.log (結果);
    }
    
    deleteVersionObject(); 
  • バージョン管理が有効なバケットからオブジェクトを一時的に削除する

    次のサンプルコードは、バージョンIDが指定されていないリクエストを送信して、バージョン管理が有効なバケットからオブジェクトを一時的に削除する方法の例を示しています。

    const OSS = require('ali-OSS ');
    
    const client = new OSS({
      // バケットが配置されているリージョンを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンをoss-cn-Hangzhouに設定します。 
      region: 'yourregion' 、
      // 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 
      accessKeyId: process.env.OSS_ACCESS_KEY_ID、
      accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET、
      // バケットの名前を指定します。 
      bucket: 'yourbucketname'
    });
    
    // バージョンIDを指定せずにオブジェクトを一時的に削除します。 削除マーカーがオブジェクトに追加されます。 
    // オブジェクトを指定します。 
    const objectName = "exampleobject.txt";
    async関数deleteObject() {
        const result = await client.de lete(objectName);
        console.log (結果);
      }
    
    deleteObject(); 

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

次の例では、バージョン管理が有効なバケットから複数のオブジェクトを一度に永続的または一時的に削除する方法について説明します。

  • バージョン管理が有効なバケットから複数のオブジェクトを一度に完全に削除する

    次のサンプルコードでは、リクエスト内のオブジェクトまたはマーカーの削除のバージョンIDを指定して、バージョン管理が有効なバケットから複数のオブジェクトまたはマーカーを完全に削除する方法の例を示します。

    const OSS = require('ali-OSS ');
    
    const client = new OSS({
      // バケットが配置されているリージョンを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンをoss-cn-Hangzhouに設定します。 
      region: 'yourregion' 、
      // 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 
      accessKeyId: process.env.OSS_ACCESS_KEY_ID、
      accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET、
      // バケットの名前を指定します。 
      bucket: 'yourbucketname'
    });
    
    // 指定されたバージョンIDを持つオブジェクト、または現在のバージョンが指定されたバージョンIDを持つ削除マーカーであるオブジェクトを削除します。 
    const names = [
      {key: 'key1.js' 、versionId: 'versionId1'} 、
      {key: 'key2.js', versionId: 'versionId2'}
    ];
    
    async関数deleteMulti() {
      const result = await client.de leteMulti(names);
      console.log (結果);
    }
    deleteMulti(); 
  • バージョン管理が有効なバケットから一度に複数のオブジェクトを一時的に削除する

    次のサンプルコードでは、バージョンIDを指定せずに、バージョン管理が有効なバケットから複数のオブジェクトを一時的に削除する方法の例を示します。 一時的に削除されたオブジェクトの現在のバージョンを復元できます。

    const OSS = require('ali-OSS ');
    
    const client = new OSS({
      // バケットが配置されているリージョンを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンをoss-cn-Hangzhouに設定します。 
      region: 'yourregion' 、
      // 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 
      accessKeyId: process.env.OSS_ACCESS_KEY_ID、
      accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET、
      // バケットの名前を指定します。 
      bucket: 'yourbucketname'
    });
    
    const names = ['key1.js', 'key2.js'];
    
    async関数deleteMulti() {
      // バージョンIDを指定せずに複数のオブジェクトを削除します。 
      const result = await client.de leteMulti(names);
      console.log (結果);
    }
    deleteMulti(); 

指定されたプレフィックスを含む名前のオブジェクトを削除する

次のサンプルコードは、名前に指定されたプレフィックスが含まれるオブジェクトを削除する方法の例を示しています。

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

const client = new OSS({
  // バケットが配置されているリージョンを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンをoss-cn-Hangzhouに設定します。 
  region: 'yourregion' 、
  // 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 
  accessKeyId: process.env.OSS_ACCESS_KEY_ID、
  accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET、
  // バケットの名前を指定します。 
  bucket: 'yourbucketname'
});

// 削除するオブジェクトの名前にプレフィックスを指定します。 
const prefix = "test";

async関数deleteMutiPrefix() {
  // 指定されたプレフィックスを名前に含むオブジェクトのバージョンを一覧表示します。 
  const list = await client.getBucketVersions({
    prefix: prefix,
  });

  for (let i = 0; i < list.objects.length; i ++) {
    const obj = list.objects[i];
    // 指定されたプレフィックスを名前に含むオブジェクトを削除します。 
    const versionId = obj.versionId;
    await client.de let e(obj.name, {
      versionId,
    });
  }
}

deleteMutiPrefix(); 

参考資料

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

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