in aws_lambda_powertools/utilities/batch/sqs.py [0:0]
def _clean(self):
"""
Delete messages from Queue in case of partial failure.
"""
# If all messages were successful, fall back to the default SQS -
# Lambda behaviour which deletes messages if Lambda responds successfully
if not self.fail_messages:
logger.debug(f"All {len(self.success_messages)} records successfully processed")
return
queue_url = self._get_queue_url()
entries_to_remove = self._get_entries_to_clean()
delete_message_response = None
if entries_to_remove:
delete_message_response = self.client.delete_message_batch(QueueUrl=queue_url, Entries=entries_to_remove)
if self.suppress_exception:
logger.debug(f"{len(self.fail_messages)} records failed processing, but exceptions are suppressed")
else:
logger.debug(f"{len(self.fail_messages)} records failed processing, raising exception")
raise SQSBatchProcessingError(
msg=f"Not all records processed successfully. {len(self.exceptions)} individual errors logged "
f"separately below.",
child_exceptions=self.exceptions,
)
return delete_message_response