Node.jsでS3フォルダを削除する方法


  1. フォルダ内のすべてのオブジェクトを削除してからフォルダを削除する方法:

この方法では、まずフォルダ内のすべてのオブジェクトを削除し、その後にフォルダ自体を削除します。

const AWS = require('aws-sdk');
const s3 = new AWS.S3();
async function deleteS3Folder(folderPath) {
  const listParams = {
    Bucket: 'your-bucket-name',
    Prefix: folderPath
  };
  try {
    const listedObjects = await s3.listObjectsV2(listParams).promise();
    if (listedObjects.Contents.length === 0) {
      return;
    }
    const deleteParams = {
      Bucket: 'your-bucket-name',
      Delete: { Objects: [] }
    };
    listedObjects.Contents.forEach(({ Key }) => {
      deleteParams.Delete.Objects.push({ Key });
    });
    await s3.deleteObjects(deleteParams).promise();
    if (listedObjects.IsTruncated) {
      await deleteS3Folder(folderPath);
    } else {
      await s3.deleteObject({ Bucket: 'your-bucket-name', Key: folderPath }).promise();
    }
  } catch (error) {
    console.error('Error deleting S3 folder:', error);
  }
}
// 使用例:
deleteS3Folder('path/to/folder')
  .then(() => {
    console.log('S3フォルダの削除が完了しました。');
  })
  .catch((error) => {
    console.error('S3フォルダの削除中にエラーが発生しました:', error);
  });
  1. AWS SDKのaws-sdkライブラリに含まれるrecursiveオプションを使用する方法:

この方法では、AWS SDKのaws-sdkライブラリに含まれるrecursiveオプションを使用して、フォルダを再帰的に削除します。

const AWS = require('aws-sdk');
const s3 = new AWS.S3();
async function deleteS3Folder(folderPath) {
  const deleteParams = {
    Bucket: 'your-bucket-name',
    Prefix: folderPath
  };
  try {
    await s3.deleteObject(deleteParams).promise();
    console.log('S3フォルダの削除が完了しました。');
  } catch (error) {
    console.error('Error deleting S3 folder:', error);
  }
}
// 使用例:
deleteS3Folder('path/to/folder')
  .catch((error) => {
    console.error('S3フォルダの削除中にエラーが発生しました:', error);
  });

これらは、Node.jsでS3フォルダを削除するための2つの一般的な方法です。選択した方法に応じて、必要なAWSアクセスキーとシークレットアクセスキーを提供する必要があります。また、削除するフォルダのパスやバケット名を適切に指定する必要があります。