Skip to content

Instantly share code, notes, and snippets.

@shawnsi
Created January 6, 2020 20:45
Show Gist options
  • Save shawnsi/23f5b1d1ad7841a4161d3807ebfa71e2 to your computer and use it in GitHub Desktop.
Save shawnsi/23f5b1d1ad7841a4161d3807ebfa71e2 to your computer and use it in GitHub Desktop.
Delete All S3 Object Versions

Delete All S3 Object Versions

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.

Usage

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,
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment