in src/backend/booking/src/confirm-booking/confirm.py [0:0]
def lambda_handler(event, context):
"""AWS Lambda Function entrypoint to confirm booking
Parameters
----------
event: dict, required
Step Functions State Machine event
bookingId: string
Unique Booking ID of an unconfirmed booking
context: object, required
Lambda Context runtime methods and attributes
Context doc: https://docs.aws.amazon.com/lambda/latest/dg/python-context-object.html
Returns
-------
string
bookingReference generated
Raises
------
BookingConfirmationException
Booking Confirmation Exception including error message upon failure
"""
booking_id = event.get("bookingId")
if not booking_id:
metrics.add_metric(name="InvalidConfirmationRequest", unit=MetricUnit.Count, value=1)
logger.error({"operation": "input_validation", "details": event})
raise ValueError("Invalid booking ID")
try:
logger.debug(f"Confirming booking - {booking_id}")
ret = confirm_booking(booking_id)
metrics.add_metric(name="SuccessfulBooking", unit=MetricUnit.Count, value=1)
tracer.put_annotation("BookingReference", ret["bookingReference"])
tracer.put_annotation("BookingStatus", "CONFIRMED")
# Step Functions use the return to append `bookingReference` key into the overall output
return ret["bookingReference"]
except BookingConfirmationException as err:
metrics.add_metric(name="FailedBooking", unit=MetricUnit.Count, value=1)
tracer.put_annotation("BookingStatus", "ERROR")
logger.exception({"operation": "booking_confirmation"})
raise