"""Lambda function module.""" from src.config import logger from constants import general from src import status def _map_error_status(lambda_function): """Map error status to lambda function name. Args: lambda_function (str): Lambda function name. Returns: str: Error status """ error_status = general.ERROR_STATUS_MAPPING.get( lambda_function.lower(), general.GENERAL_ERROR_STATUS) return error_status def handler(event, context): """Lambda entry point. Saves asset general status. Args: event (dict): Object with asset status info. context (dict): Environment state. Returns: bool: True if success else raise Exception. """ try: function = event.pop('Function') error = event.pop('Error') input_params = event error_status = _map_error_status(function) filename = input_params.get('key') if not filename: if input_params['detail'].get('object', {}).get('key'): filename = input_params['detail']['object']['key'] elif input_params['detail'].get( 's3ObjectDetails', {}).get('objectKey'): filename = input_params['detail']['s3ObjectDetails'][ 'objectKey'] else: filename = input_params['detail']['requestParameters']['key'] status.send_general_status( function, error_status, filename, error.get('Error', ''), error.get('Cause', ''), None, input_params) except Exception as e: logger.exception(str(e)) raise return True