#!/usr/bin/env python3 """boto-empty-deleted-versions -- delete all versions of deleted files from an s3 bucket""" import boto from boto.s3 import deletemarker import sys def main(): """Main procedure""" bucket = sys.argv[1] connection = boto.connect_s3() bucket = connection.get_bucket(bucket) files_to_delete = [] for version in bucket.list_versions(): if isinstance(version, deletemarker.DeleteMarker) and version.is_latest: files_to_delete.append(version.name) for version in bucket.list_versions(): if version.name in files_to_delete: print("deleting", version.name, "version", version.version_id) bucket.delete_key(version.name, version_id=version.version_id) if __name__ == "__main__": main()