본문 바로가기

Ops/AWS

AWS Lambda Code - firehose peer

반응형

AWS Lambda Code - firehose peer

 

 

 

 

 

# Python 3.8

import base64
import json
import datetime

print('Loading function')

def lambda_handler(event, context):
    output = []

    for record in event['records']:
        print("recordId: " + record['recordId'])
        payload = base64.b64decode(record['data']).decode('utf-8')
        
        # JSON(payload) -> Dict(payload_dict)
        payload_dict = json.loads(payload)
        data_dict = {}
        
        print("payload_dict: ",payload_dict)
        
        if " UTC " in payload_dict['log']:
            data_dict['from'] = "peer"
        else:
            data_dict['from'] = "other"
            
        data_dict['log'] = payload_dict['log']
        data_dict['stream'] = payload_dict['stream']
        data_dict['time'] = payload_dict['time'].split(".")[0]+"+0000"
        data_dict['instanceName'] = payload_dict['hostname']
        data_dict['instanceId'] = payload_dict['instance_id']
        data_dict['containerId'] = payload_dict['log_path'].split("/")[4]
        
        # Dict(data_dict) -> JSON(payload) 
        data_json = json.dumps(data_dict)
        
        print("data_dict: ",data_dict)

        output_record = {
            'recordId': record['recordId'],
            'result': 'Ok',
            'data': base64.b64encode(data_json.encode('utf-8')).decode('utf-8')
        }
        output.append(output_record)

    print('Successfully processed {} records.'.format(len(event['records'])))

    return {'records': output}

 

 

 


by mkdir-chandler


 

 

 

 

 

728x90
반응형