def delete_kendra_docs()

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