"""Lambda failure-notify function module.""" from content_utils.logging.logger import ContentLambdaLogger import sentry_sdk from sentry_sdk.integrations.aws_lambda import AwsLambdaIntegration from src import config from src.logic import send_failure_notification if config.SENTRY_DSN: sentry_sdk.init( dsn=config.SENTRY_DSN, environment=config.ENVIRONMENT, integrations=[AwsLambdaIntegration(timeout_warning=True)] ) lambda_logger = ContentLambdaLogger(config.app_logger) def handler(event, context): """Lambda Entry point.""" lambda_logger.start() lambda_logger.set_data( queue_id=event.get('review_queue_id'), user_id=event.get('user_uuid'), product_id=event.get('product_id') ) lambda_logger.logger.debug(event) if event.get('skip_failure_notifications'): lambda_logger.set_data(status='skip', result='Explicitly skipped.') lambda_logger.end() return {'status': 'success'} try: send_failure_notification( user_id=event.get('user_uuid'), product_id=event.get('product_id') ) lambda_logger.set_data( status='success', result=( 'Content review failure notification sent for product_id ' f'{event.get("product_id")}' ) ) except Exception as e: lambda_logger.set_data(status='error', result=str(e)) raise e finally: lambda_logger.end() return {'status': 'success'}