scripts/aws/delete_s3_bucket.py
2024-07-13 15:04:53 +01:00

35 lines
1 KiB
Python
Executable file

#!/usr/bin/python3
#
# An S3 bucket can only be deleted if it is empty, so all
# objects must be deleted. For a versioned bucket, this includes
# object versions and object deletion markers.
#
import argparse
import boto3
import click
def delete_s3_bucket(bucket_name, dry_run=True):
s3 = boto3.resource('s3')
bucket = s3.Bucket(bucket_name)
if not bucket.creation_date:
print(f"Bucket {bucket_name} not found")
return
n = 0
for o in bucket.objects.all():
n = n+1
print(f"Delete {o.key}")
if click.confirm(f"Delete {n} objects from {bucket_name}?"):
bucket.objects.all().delete()
bucket.object_versions.all().delete()
bucket.delete()
print(f"Deleted bucket {bucket_name}")
if __name__ == "__main__":
parser = argparse.ArgumentParser(description="Delete S3 bucket and its contents")
parser.add_argument("bucket", help="Name of the bucket to delete", nargs=1)
args = parser.parse_args()
for bucket in args.bucket:
delete_s3_bucket(bucket)