Skip to content

Instantly share code, notes, and snippets.

@rghv404
Last active February 9, 2021 03:03
Show Gist options
  • Save rghv404/d1b7d2ddf7a5f8456feb64cb9392d83d to your computer and use it in GitHub Desktop.
Save rghv404/d1b7d2ddf7a5f8456feb64cb9392d83d to your computer and use it in GitHub Desktop.
def deleteMuliS3Objects(bucket: String, prefix: String): Unit = {
import scala.collection.JavaConverters._
import com.amazonaws.AmazonServiceException
import com.amazonaws.SdkClientException
import com.amazonaws.services.s3.AmazonS3
import com.amazonaws.services.s3.AmazonS3ClientBuilder
import com.amazonaws.services.s3.model.DeleteObjectsRequest
import com.amazonaws.services.s3.model.DeleteObjectsRequest.KeyVersion
val s3Client: AmazonS3 = AmazonS3ClientBuilder.standard().build();
try{
// a bad way to map on a java list -- convert to scala list and then back to java because delelteobjectreqeuest
// does not accept scala list as it's input
val keyList: List[KeyVersion] = s3Client.listObjects(bucket, prefix)
.getObjectSummaries()
.asScala.toList.map(item => new KeyVersion(item.getKey()))
if (keyList.length > 0){
val delObjRes = s3Client.deleteObjects(new DeleteObjectsRequest(bucket)
.withKeys(keyList.asJava))
val successfulDeletes = delObjRes.getDeletedObjects().size()
println(successfulDeletes)
} else {
println(s"No objects to delete in $bucket/$prefix")
}
} catch {
case e: AmazonServiceException => e.printStackTrace()
case e: SdkClientException => e.printStackTrace()
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment