0

I want to delete all the versions along with the delete marker for multiple objects from the version enabled S3 bucket with Java sdk 2.0.

I'm trying below code to do that

 ArrayList<ObjectIdentifier> keys = new ArrayList<>();
 ObjectIdentifier objectId;

 objectId = ObjectIdentifier.builder()
            .key("test2")
            .build();
            
 keys.add(objectId);

 objectId = ObjectIdentifier.builder()
            .key("test3")
            .build();
            
 keys.add(objectId);
            
      
            
Delete del = Delete.builder()
             .objects(keys)
             .build();

try {
    DeleteObjectsRequest multiObjectDeleteRequest = DeleteObjectsRequest.builder()
                    .bucket("my-bucket")
                    .delete(del)
                    .build();

    DeleteObjectsResponse response =s3Client.deleteObjects(multiObjectDeleteRequest);
    System.out.println(response);
            
} catch (S3Exception e) {
    System.err.println(e.awsErrorDetails().errorMessage());
    System.exit(1);
}

And I'm getting below response for the same

DeleteObjectsResponse(Deleted=[DeletedObject(Key=test2, DeleteMarker=true, DeleteMarkerVersionId=abcdefgh.jkfsdglkjfsdg9gfkjh89545), DeletedObject(Key=test3, DeleteMarker=true, DeleteMarkerVersionId=.skdjgklhdfs8gfs89dhsdsda9)])

The response is same in all below cases (just the DeleteMarkerVersionId changes on every execution.)

  1. I have never uploaded/put test3 object
  2. I have uploaded test2 object - Object is present
  3. test2 object is already deleted - Object is not present.

How to get the accurate response for it.

Ssk
  • 13
  • 3

0 Answers0