"""Lambda complete-escalation-notify module.""" from content_utils.exceptions import InvalidProductException from content_utils.logging.product_logging import ProductEventLogger from kafka_utils.consumer.deserializer.simple_json import JSONDeserializer from kafka_utils.consumer.source.mapping import EventSourceMessage from kafka_utils.exceptions import IneligibleEventException import sentry_sdk from sentry_sdk.integrations.aws_lambda import AwsLambdaIntegration from src import config from src.logic import event_handling if config.SENTRY_DSN: sentry_sdk.init( dsn=config.SENTRY_DSN, environment=config.ENVIRONMENT, integrations=[AwsLambdaIntegration(timeout_warning=True)] ) json_deserializer = JSONDeserializer() content_lambda_logger = ProductEventLogger(config.app_logger) def handler(event, context): """Lambda Entry point.""" message = EventSourceMessage(event) for event_key, msk_message in message: content_lambda_logger.start(msk_message, event_key, json_deserializer) try: process_event(msk_message) content_lambda_logger.set_data(status='success', result='notification sent') except IneligibleEventException as e: content_lambda_logger.set_data(status='skip', result=str(e)) return {'status': 'skip'} except InvalidProductException as e: content_lambda_logger.set_data(status='skip', result=str(e)) return {'status': 'skip'} except Exception as e: content_lambda_logger.set_data(status='error', result=str(e)) raise e finally: content_lambda_logger.end() return {'status': 'success'} def process_event(message): """Process review event.""" if not message.value: content_lambda_logger.set_data(status='skip', result='no_message_body') return event_handling.processing_logic(message, json_deserializer)