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