def handler()

in source/customresources/custom-resource-py/lambda.py [0:0]


def handler(event, context):

    #Each resource returns a promise with a json object to return cloudformation.
    try:
        request =event['RequestType']
        resource = event['ResourceProperties']['Resource']
        config = event['ResourceProperties']
        responseData = {}
        print('Request::{} Resource:: {}'.format(request,resource))

        if request == 'Create':
            if resource == 'MediaLiveInput':
                responseData = MediaLive.create_input(config)
                id = responseData['Id']

            elif resource == 'MediaLiveChannel':
                responseData = MediaLive.create_channel(config)
                id = responseData['ChannelId']

            elif resource == 'MediaLiveChannelStart':
                MediaLive.start_channel(config)
                id = 'MediaLiveChannelStart'

            elif resource == 'MediaPackageChannel':
                responseData = MediaPackage.create_channel(config)
                id = responseData['ChannelId']

            elif resource == 'MediaPackageEndPoint':
                responseData = MediaPackage.create_endpoint(config)
                id = responseData['Id']

            elif resource == 'DemoConsole':
                Demo.s3_deploy(config)
                id = 'DemoConsole'

            elif resource == 'UUID':
                responseData = {'UUID':str(uuid.uuid4())}
                id = responseData['UUID']

            elif resource == 'AnonymousMetric':
                Metrics.send_metrics(config)
                id = 'Metrics Sent'

            else:
                print('Create failed, {} not defined in the Custom Resource'.format(resource))
                cfn.send(event, context, 'FAILED',{},context.log_stream_name)

            cfn.send(event, context, 'SUCCESS', responseData, id)

        elif request == 'Delete':

            if resource == 'MediaLiveChannel':
                MediaLive.delete_channel(event['PhysicalResourceId'])

            elif resource == 'MediaPackageChannel':
                    MediaPackage.delete_channel(event['PhysicalResourceId'])

            elif resource == 'DemoConsole':
                Demo.s3_delete(config)

            else:
                #medialive inputs and mediapackage endpoints are deleted as part of
                #the the channel deletes so not included here, sending default success response
                print('RESPONSE:: {} : delte not required, sending success response'.format(resource))

            cfn.send(event, context, 'SUCCESS',{})

        else:
            print('RESPONSE:: {} Not supported'.format(request))

    except Exception as e:
        print('Exception: {}'.format(e))
        cfn.send(event, context, 'FAILED',{},context.log_stream_name)
        print (e)