in CommonLayerCode/datalake-library/python/datalake_library/interfaces/s3_interface.py [0:0]
def delete_objects(self, bucket, prefix):
prefix = unquote_plus(prefix)
self._logger.info('Deleting all objects in bucket {} with prefix {}'.format(bucket, prefix))
object_paginator = self._s3_client.get_paginator('list_objects_v2')
response_iterator = object_paginator.paginate(
Bucket=bucket,
Prefix=prefix
)
for response in response_iterator:
if 'Contents' in response:
objects_to_delete = [{'Key': obj['Key']} for obj in response['Contents']]
delete_response = self._s3_client.delete_objects(
Bucket=bucket,
Delete={
'Objects': objects_to_delete
}
)
if 'Errors' in delete_response:
self._logger.info('Object delete failed')
delete_errors = delete_response['Errors']
raise ObjectDeleteFailedException(json.dumps(delete_errors))
self._logger.info('Successfully deleted all objects in bucket {} with prefix {}'.format(bucket, prefix))