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