Use this script to delete all object versions in a S3 bucket. For very large object version counts it may be more effective to use Object Lifecycle Management instead to expire versions.
python delete-object-versions.py (s3-bucket-name)
Use this script to delete all object versions in a S3 bucket. For very large object version counts it may be more effective to use Object Lifecycle Management instead to expire versions.
python delete-object-versions.py (s3-bucket-name)
#!/usr/bin/env python | |
import sys | |
import boto3 | |
BUCKET = sys.argv[1] | |
print(f'Deleting all object for bucket:"{BUCKET}"') | |
client = boto3.client('s3') | |
paginator = client.get_paginator('list_object_versions') | |
for page in paginator.paginate(Bucket=BUCKET): | |
versions = [] | |
for version_type in ('DeleteMarkers', 'Versions'): | |
try: | |
for version in page[version_type]: | |
version_tuple = (version['Key'], version['VersionId']) | |
versions.append(version_tuple) | |
except KeyError: | |
# Ignore missing version type keys as there is nothing to do | |
pass | |
for key, version_id in versions: | |
print(f'Deleting key:"{key}" version_id:"{version_id}"') | |
client.delete_object( | |
Bucket=BUCKET, | |
Key=key, | |
VersionId=version_id, | |
) |