quickstart-taskcat-ci
quickstart-taskcat-ci copied to clipboard
empty-bucket lambda code may report empty bucket when bucket not empty
trafficstars
for page in result:
try:
for k in page['Contents']:
objects.append({'Key': k['Key']})
print('deleting objects')
client.delete_objects(Bucket=bucket, Delete={'Objects': objects})
objects = []
except Exception as e:
logging.error('Exception deleting objects from bucket: %s' % e)
pass
print('bucket empty')
It is conceivable here to have an exception, thus an object is not deleted. However, the function will report "bucket empty" even if an exception occurs.
A similar issue exists for the delete_versionedobjects function.
delete_versionedobjects function:
for page in result:
try:
for k in page['Versions']:
objects.append({'Key': k['Key'], 'VersionId': k['VersionId']})
try:
for k in page['DeleteMarkers']:
version = k['VersionId']
key = k['Key']
objects.append({'Key': key, 'VersionId': version})
except Exception as e:
# Note that I don't believe an exception can be thrown, so
# this code should never execute. Leaving it here in case I
# am wrong
logging.error('Exception assembling delete markers: %s' % e)
pass
print('deleting objects')
client.delete_objects(Bucket=bucket, Delete={'Objects': objects})
# objects = []
except Exception as e:
logging.error('Exception deleting versioned objects: %s' % e)
pass
print('bucket empty')