in src/backend/booking/src/cancel-booking/cancel.py [0:0]
def lambda_handler(event, context):
"""AWS Lambda Function entrypoint to cancel booking
Parameters
----------
event: dict, required
Step Functions State Machine event
chargeId: string
pre-authorization charge ID
context: object, required
Lambda Context runtime methods and attributes
Context doc: https://docs.aws.amazon.com/lambda/latest/dg/python-context-object.html
Returns
-------
boolean
Raises
------
BookingCancellationException
Booking Cancellation Exception including error message upon failure
"""
booking_id = event.get("bookingId")
if not booking_id:
metrics.add_metric(name="InvalidCancellationRequest", unit=MetricUnit.Count, value=1)
logger.error({"operation": "input_validation", "details": event})
raise ValueError("Invalid booking ID")
try:
logger.debug(f"Cancelling booking - {booking_id}")
ret = cancel_booking(booking_id)
metrics.add_metric(name="SuccessfulCancellation", unit=MetricUnit.Count, value=1)
tracer.put_annotation("BookingStatus", "CANCELLED")
return ret
except BookingCancellationException as err:
metrics.add_metric(name="FailedCancellation", unit=MetricUnit.Count, value=1)
tracer.put_annotation("BookingStatus", "ERROR")
logger.exception({"operation": "booking_cancellation"})
raise