in lambda/indexer/common.py [0:0]
def delete_kendra_docs(dsId, indexId, kendra_sync_job_id, deletions):
logger.info(f"delete_kendra_docs(dsId={dsId}, indexId={indexId}, deletions[{len(deletions)} docs..])")
deletion_batches = list(batches(deletions,10))
for deletion_batch in deletion_batches:
try:
logger.info(f"KENDRA.batch_delete_document - {len(deletion_batch)} documents, first few: {deletion_batch[0:2]}")
response = KENDRA.batch_delete_document(
IndexId=indexId,
DocumentIdList=deletion_batch,
DataSourceSyncJobMetricTarget={
'DataSourceId': dsId,
'DataSourceSyncJobId': kendra_sync_job_id
}
)
if "FailedDocuments" in response:
for failedDocument in response["FailedDocuments"]:
logger.error(f"Failed to delete doc from index: {failedDocument['Id']}. Reason {failedDocument['ErrorMessage']}")
put_statusTableItem(id=failedDocument['Id'], status="DELETED", sync_state="FAILED TO DELETE FROM INDEX")
except Exception as e:
logger.error("Exception in KENDRA.batch_delete_document: " + str(e))
for s3url in deletions:
put_statusTableItem(id=s3url, status="DELETED", sync_state="FAILED TO DELETE FROM INDEX")
return False
return True