def lambda_handler()

in source/log_parser/log-parser.py [0:0]


def lambda_handler(event, context):
    log = logging.getLogger()
    log.info('[lambda_handler] Start')

    result = {}
    try:
        # ------------------------------------------------------------------
        # Set Log Level
        # ------------------------------------------------------------------
        log_level = str(os.getenv('LOG_LEVEL').upper())
        if log_level not in ['DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL']:
            log_level = 'ERROR'
        log.setLevel(log_level)

        # ----------------------------------------------------------
        # Process event
        # ----------------------------------------------------------
        log.info(event)

        if "resourceType" in event:
            process_athena_scheduler_event(log, event)
            result['message'] = "[lambda_handler] Athena scheduler event processed."
            log.info(result['message'])

        elif 'Records' in event:
            for r in event['Records']:
                bucket_name = r['s3']['bucket']['name']
                key_name = unquote_plus(r['s3']['object']['key'])

                if 'APP_ACCESS_LOG_BUCKET' in environ and bucket_name == os.getenv('APP_ACCESS_LOG_BUCKET'):
                    if key_name.startswith('athena_results/'):
                        process_athena_result(log, bucket_name, key_name, scanners)
                        result['message'] = "[lambda_handler] Athena app log query result processed."
                        log.info(result['message'])

                    else:
                        conf_filename = os.getenv('STACK_NAME') + '-app_log_conf.json'
                        output_filename = os.getenv('STACK_NAME') + '-app_log_out.json'
                        log_type = os.getenv('LOG_TYPE')
                        process_log_file(log, bucket_name, key_name, conf_filename, output_filename, log_type, scanners)
                        result['message'] = "[lambda_handler] App access log file processed."
                        log.info(result['message'])

                elif 'WAF_ACCESS_LOG_BUCKET' in environ and bucket_name == os.getenv('WAF_ACCESS_LOG_BUCKET'):
                    if key_name.startswith('athena_results/'):
                        process_athena_result(log, bucket_name, key_name, flood)
                        result['message'] = "[lambda_handler] Athena AWS WAF log query result processed."
                        log.info(result['message'])

                    else:
                        conf_filename = os.getenv('STACK_NAME') + '-waf_log_conf.json'
                        output_filename = os.getenv('STACK_NAME') + '-waf_log_out.json'
                        log_type = 'waf'
                        process_log_file(log, bucket_name, key_name, conf_filename, output_filename, log_type, flood)
                        result['message'] = "[lambda_handler] AWS WAF access log file processed."
                        log.info(result['message'])

                else:
                    result['message'] = "[lambda_handler] undefined handler for bucket %s" % bucket_name
                    log.info(result['message'])

                send_anonymous_usage_data(log)

        else:
            result['message'] = "[lambda_handler] undefined handler for this type of event"
            log.info(result['message'])

    except Exception as error:
        log.error(str(error))
        raise

    log.info('[lambda_handler] End')
    return result