def handler()

in cognito-restapi-vpclink/AuxLambdaFunctionNLB/index.py [0:0]


def handler(event, context):
    logger = logging.getLogger()
    logger.setLevel(logging.INFO)

    # initialize our responses, assume failure by default

    response_data = {}
    response_status = cfnresponse.FAILED

    logger.info('Received event: {}'.format(json.dumps(event)))

    if event['RequestType'] == 'Delete':
        response_status = cfnresponse.SUCCESS
        cfnresponse.send(event, context, response_status, response_data)

    name_filter = event['ResourceProperties']['NameFilter']
    name_filter_parts = name_filter.split('/')
    resource_type = name_filter_parts[0]

    if resource_type == "net":
    
        response = {}
        
        try:
            ec2 = boto3.client('ec2')
            response = ec2.describe_network_interfaces(
                Filters=[
                    {
                        'Name': 'description',
                        'Values': ['ELB ' + name_filter]
                    },
                ],
            )
        except Exception as e:
            logger.info('ec2.describe_network_interfaces failure: {}'.format(e))
            cfnresponse.send(event, context, response_status, response_data)

        number_of_enis = len(response['NetworkInterfaces'])
        logger.info('number of network interfaces returned: {}'.format(number_of_enis))

        if number_of_enis >= 1:
            ip_addresses = [ sub['PrivateIpAddress'] for sub in response['NetworkInterfaces'] ]
            separator = ', '
            ip_addresses_string = separator.join(ip_addresses)
            response_data['IpAddresses'] = ip_addresses_string
            logger.info('NLB IP Addresses {}'.format(ip_addresses_string))
            
            response_status = cfnresponse.SUCCESS
            cfnresponse.send(event, context, response_status, response_data)

        else:
            logger.info('no matching network interfaces for filter {}'.format(name_filter))
            cfnresponse.send(event, context, response_status, response_data)

    else:
        logger.info('invalid resource type {}'.format(resource_type))
        cfnresponse.send(event, context, response_status, response_data)