def lambda_handler()

in source/SolutionHelper/app.py [0:0]


def lambda_handler(event, context):
    try:
        global log_level
        log_level = str(os.environ.get('LOG_LEVEL')).upper()
        if log_level not in [
                                'DEBUG', 'INFO',
                                'WARNING', 'ERROR',
                                'CRITICAL'
                            ]:
            log_level = 'DEBUG'
        logging.getLogger().setLevel(log_level)

        logging.debug("Helper received event:{}".format(event))

        http = urllib3.PoolManager()

        requestType = event['RequestType']
        resourceProperties = event.get('ResourceProperties',None)
        if(resourceProperties==None):
            resourceProperties = event.get('OldResourceProperties',None)
        customAction = resourceProperties.get('CustomAction',None)
        sendAnonymousUsage = str(os.environ.get('AnonymousUsage',"No"))

        if(customAction=="LifecycleMetric" and sendAnonymousUsage=="Yes"):
            solutionId = resourceProperties.get('SolutionId',None)
            existinguuid = resourceProperties.get('UUID',None)
            metricdata = {
                "Version" : resourceProperties.get('Version',"0"),
                requestType : datetime.utcnow().strftime('%Y-%m-%d %H:%M:%S.%f')
            }
            solutionData={
                "Solution": solutionId,
                "UUID": existinguuid,
                "TimeStamp": datetime.utcnow().strftime('%Y-%m-%d %H:%M:%S.%f'),
                "Data": metricdata
            }
            logging.info('Sending metric data:{}'.format(solutionData))
            resp = sendMetric(solutionData)
            logging.debug('Send metric response:{}'.format(resp))

        response = {}
        responseData = {}
        if(requestType=="Create" and customAction=="CreateUuid"):
            newUuid = str(uuid.uuid1()) 
            responseData = { "UUID"  : newUuid }

        responseUrl = event.get('ResponseURL',None)
        response['StackId'] = event.get('StackId',None)
        response['RequestId'] = event.get('RequestId', None)
        response['LogicalResourceId'] = event.get('LogicalResourceId',"")
        response['PhysicalResourceId'] = event.get('PhysicalResourceId',f"{context.function_name}-{context.function_version}")
        response['Status'] = "SUCCESS"
        response['Data'] = responseData
        encoded_data = json.dumps(response).encode('utf-8')
        headers = {
            'content-type' : '',
            'content-length' : str(len(encoded_data))
        }
        logging.info('SENDING RESPONSE:{}'.format(response))
        response = http.request('PUT',responseUrl,
                                body=encoded_data,
                                headers=headers)
        logging.info("CloudFormation returned status code:{}".format(response.reason))
    except Exception as e:
       logging.error(e)
       raise e
    return responseData