AWS S3 Javascript SDK V2, Bulk delete using deleteObjects() not working
And I am getting this error
Error:-
0923a739-1498-4c61-89c0-30cbb70c8008 INFO 500: null
at Request.extractError (/var/runtime/node_modules/aws-sdk/lib/services/s3.js:710:35)
at Request.callListeners (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:106:20)
at Request.emit (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:78:10)
at Request.emit (/var/runtime/node_modules/aws-sdk/lib/request.js:686:14)
at Request.transition (/var/runtime/node_modules/aws-sdk/lib/request.js:22:10)
at AcceptorStateMachine.runTo (/var/runtime/node_modules/aws-sdk/lib/state_machine.js:14:12)
at /var/runtime/node_modules/aws-sdk/lib/state_machine.js:26:10
at Request.<anonymous> (/var/runtime/node_modules/aws-sdk/lib/request.js:38:9)
at Request.<anonymous> (/var/runtime/node_modules/aws-sdk/lib/request.js:688:12)
at Request.callListeners (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:116:18) {
code: 500,
region: null,
time: 2022-10-28T13:29:37.291Z,
requestId: null,
extendedRequestId: undefined,
cfId: undefined,
statusCode: 500,
retryable: true
}
Code:
const keys = listObjectsV2Output?.Contents.map((content) => content.Key) as [];
console.log(`Deleting ${keys?.length} number of keys inside ${bucket}/${Key}. Keys to delete: ${JSON.stringify(keys)}`);
// Bulk delete upto 1000 keys in one requestBody
let objectIdentifierList: ObjectIdentifierList = [];
for (let key of keys) {
const objectIdentifier: ObjectIdentifier = {
Key: key,
};
objectIdentifierList.push(objectIdentifier);
}
const deleteKeys: Delete = {
Objects: objectIdentifierList,
Quiet: true,
};
const deleteObjectsRequest: DeleteObjectsRequest = {
Bucket: bucket,
Delete: deleteKeys,
};
console.log(`S3 deleteObjects deleteObjectsRequest : ${JSON.stringify(deleteObjectsRequest)}`);
const deleteObjectsOutput: DeleteObjectsOutput = await s3Client.deleteObjects(deleteObjectsRequest).promise();
console.log(`S3 bulk deleteObjects response : ${JSON.stringify(deleteObjectsOutput)}`);
console.log(`Errors during delete : ${JSON.stringify(deleteObjectsOutput.Errors)}`);
allKeysDeleted = deleteObjectsOutput.Errors?.length == 0;
Input JSON Example:-
deleteObjectsRequest :
{
"Bucket": "mybucket",
"Delete": {
"Objects": [
{
"Key": "clients/C1/sites/G100/camear/MP4_H264-1660553709-1660554009 - Copy.mp4"
},
{
"Key": "clients/C1/sites/G100/camear/MP4_H264-1660554009-1660554309 - Copy (2).mp4"
},
{
"Key": "clients/C1/sites/G100/camear/"
},
{
"Key": "clients/C1/sites/G100/siteInfo"
},
{
"Key": "clients/C1/sites/G100/"
}
],
"Quiet": true
}
}