Merge pull request #490 from cbodley/wip-489

boto3: list_versions() omits empty KeyMarker/VersionIdMarker
This commit is contained in:
Casey Bodley 2023-03-06 09:19:56 -05:00 committed by GitHub
commit 5b9652caa4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -82,18 +82,13 @@ def get_objects_list(bucket, client=None, prefix=None):
# generator function that returns object listings in batches, where each # generator function that returns object listings in batches, where each
# batch is a list of dicts compatible with delete_objects() # batch is a list of dicts compatible with delete_objects()
def list_versions(client, bucket, batch_size): def list_versions(client, bucket, batch_size):
key_marker = '' kwargs = {'Bucket': bucket, 'MaxKeys': batch_size}
version_marker = ''
truncated = True truncated = True
while truncated: while truncated:
listing = client.list_object_versions( listing = client.list_object_versions(**kwargs)
Bucket=bucket,
KeyMarker=key_marker,
VersionIdMarker=version_marker,
MaxKeys=batch_size)
key_marker = listing.get('NextKeyMarker') kwargs['KeyMarker'] = listing.get('NextKeyMarker')
version_marker = listing.get('NextVersionIdMarker') kwargs['VersionIdMarker'] = listing.get('NextVersionIdMarker')
truncated = listing['IsTruncated'] truncated = listing['IsTruncated']
objs = listing.get('Versions', []) + listing.get('DeleteMarkers', []) objs = listing.get('Versions', []) + listing.get('DeleteMarkers', [])