def lambda_handler(event, context):
    # Lambda handler function uses crhelper library to handle CloudFormation services
    try:
        logger.info("<<<<<<<<<< Lambda_handler Event >>>>>>>>>>")
        logger.info(event)
        resource_type = event.get('ResourceType')
        if resource_type == 'Custom::Organizations' \
            or resource_type == 'Custom::StackInstance' \
            or resource_type == 'Custom::ServiceControlPolicy' \
            or resource_type == 'Custom::CheckAVMExistsForAccount' \
            or resource_type == 'Custom::ADConnector':
            s = '%s-%s' % (event.get('StackId'),
                           event.get('LogicalResourceId'))
            physical_resource_id = md5(s.encode('UTF-8')).hexdigest()
            event.update({'PhysicalResourceId': physical_resource_id})
            execute_state_machine(event)
        else:
            return cfn_handler(event, context, create, update, delete, logger,
                               init_failed)
    except Exception as e:
        message = {
            'FILE': __file__.split('/')[-1],
            'METHOD': inspect.stack()[0][3],
            'EXCEPTION': str(e)
        }
        logger.exception(message)
        raise
def lambda_handler(event, context):
    """
    Pass event and context to cfn_handler
    cfn_handler calls the functions above based on mapping below, then
    uses its "send" function to post the result to CloudFormation
    """
    logger.info("<<<<<<<<<< Lambda_handler Event >>>>>>>>>>")
    logger.info(event)

    request_type = event.get('RequestType', 'invalid').lower()

    if request_type in ['update', 'create', 'delete']:
        return cfn_handler(event, context, create, update, delete, logger, init_failed)
    else:
        logger.error('Invalid or missing request type {}'.format(request_type))
        raise ValueError('No valid RequestType found! Request type "{}" received'.format(event['RequestType']))
Пример #3
0
def lambda_handler(event, context):
    # Lambda handler function uses cr helper library to handle CloudFormation services
    try:
        logger.info(
            "<<<<<<<<<< Custom Resource lambda_handler Event >>>>>>>>>>")
        # if the event is from the CloudWatch Events Service then invoke the state machine
        if event.get('source') == 'aws.tag' and event.get(
                'detail-type') == 'Tag Change on Resource':
            logger.info('Event received from CloudWatch Event Service')
            logger.info(event)
            state_machine = StepFunctions(event, logger)
            state_machine.trigger_state_machine()
        # else if the event is from Cloudformation Service
        elif event.get('StackId'
                       ) is not None and 'arn:aws:cloudformation' in event.get(
                           'StackId'):
            logger.info('Event received from Cloudformation Service')
            if event.get('ResourceType') != 'Custom::SecureSSMStrings':
                logger.info(event)  # avoid printing sensitive data in the logs
            return cfn_handler(event, context, create, update, delete, logger,
                               init_failed)
        # else of the event is from Web Application
        elif event.get('data') is not None:
            logger.info(
                'Event received from Web App - Transit Network Management Console'
            )
            logger.info(event)
            state_machine = StepFunctions(event.get('data'), logger)
            state_machine.trigger_state_machine()
        else:
            logger.info(event)
            logger.error('The event is from an invalid source')
            raise Exception(
                'The event is neither from CloudWatch Event service or from Cloudformation service.'
            )
    except Exception as e:
        message = {
            'FILE': __file__.split('/')[-1],
            'METHOD': inspect.stack()[0][3],
            'EXCEPTION': str(e)
        }
        logger.exception(message)
        raise
Пример #4
0
def lambda_handler(event, context):
    logger.info("<<<<<<<<<< ConfigDeployer Event >>>>>>>>>>")
    logger.info(event)
    logger.debug(context)
    return cfn_handler(event, context, create, update, delete, logger,
                       init_failed)