xxxxxxxxxx
/** DELETE BUCKET FULL FOLDER */
async deleteBucketFolder(dir: string): Promise<void> {
try {
const objects: S3.ListObjectsV2Output = await this._s3Client.listObjectsV2({
Bucket: process.env.BUCKET_NAME ?? "",
Prefix: dir
}).promise();
if (!objects.Contents || objects.Contents.length === 0) {
console.log('No objects found in the folder.');
return;
}
const deletePromises = objects.Contents.map(obj => {
return this._s3Client.deleteObject({
Bucket: process.env.BUCKET_NAME ?? "",
Key: obj.Key as string
}).promise();
});
await Promise.all(deletePromises);
console.log('Bucket folder deleted successfully.');
} catch (err) {
console.error('Error deleting the bucket folder:', err);
}
}
xxxxxxxxxx
async function emptyS3Directory(bucket, dir) {
const listParams = {
Bucket: bucket,
Prefix: dir
};
const listedObjects = await s3.listObjectsV2(listParams).promise();
if (listedObjects.Contents.length === 0) return;
const deleteParams = {
Bucket: bucket,
Delete: { Objects: [] }
};
listedObjects.Contents.forEach(({ Key }) => {
deleteParams.Delete.Objects.push({ Key });
});
await s3.deleteObjects(deleteParams).promise();
if (listedObjects.IsTruncated) await emptyS3Directory(bucket, dir);
}