def lambda_handler()

in cosmos-db-migration-utility/src/lambda/gap-watch-request-reader/lambda_function.py [0:0]


def lambda_handler(event, context):
    logger.info("Lambda: gap-watch-request-reader was invoked with event: %s.", event)
    try:
        data = {}
        payload = {}
        first_one = True
        for record in event['Records']:
            body = record["body"]
            payload = json.loads(body)
            logger.info("Completed loading payload information from message: %s.", json.dumps(payload))
            if first_one:
                data = process_request(payload)
                first_one = False
            else:
                # process only one. send the payload back to the queue again
                # TODO: send only unique items
                logger.info("Found more than one message in the request. Resending it back to queue. Payload: %s.", json.dumps(payload))
                send_sqs_message("gap-watch-request-queue", payload, randint(0,5))
        logging.info("Successfully completed processing gap-watch-request-reader sqs messages. Result: %s.", json.dumps(data, cls=JSONFriendlyEncoder))
        return data  
    except Exception as e:
        stack_trace = traceback.format_stack()
        data = {
            "status": "error",
            "input": payload,
            "output": {
                "operation": "gap-watch-request-reader",
                "error": str(e),
                "stack_trace": stack_trace
            }
        }
        logging.error("Failed while processing gap-watch-request-reader messages. Result: %s.", json.dumps(data, cls=JSONFriendlyEncoder), exc_info=True)
        raise