Deleting an Amazon S3 bucket can be a difficult task. It is even a bigger task if it has a large number of objects in it because you cannot delete non-empty buckets.
Automated solutions such as ‘S3cmd’ or ‘S3nukem’ would either break or take weeks to delete an S3 bucket depending on its size and the number of objects in it.
The best approach is to use AWS, which comes with the benefit of a self-service platform and provides an option of setting lifecycle policy for S3 objects.
AWS lifecycle policies help in defining actions on Amazon S3 during an object’s lifetime. For example, transitioning objects to another storage class, archiving them, or deleting them after a specified period.
Using a shared prefix (that is, objects that have names that begin with a common string), you can define the lifecycle policy for all objects or a subset of objects in the S3 bucket. And using a lifecycle policy, you can define actions specific to current and non-current object versions.
Note: The objects inside the AWS S3 would be gone forever after a day.
This solution is not instant but it takes a day to execute, which is faster than other solutions.
From now on, AWS does the dirty work for you. S3 will do its own housekeeping, and after a day, everything inside your bucket will be deleted.
This approach can be used if you regularly create stacks with CloudFormation or Terraform, and the buckets won’t delete if there are objects in them.
Instead of writing scripts and adding to the workload you can easily setup lifecycle rules to take action on the AWS S3.
There are a number of things that can be accomplished using lifecycle rules. You can read more about them below.
Learn how lifecycle policies can help with cost optimization here