def lambda_handler()

in src/cw_auto_alarms.py [0:0]


def lambda_handler(event, context):
    logger.info('event received: {}'.format(event))
    try:
        if 'source' in event and event['source'] == 'aws.ec2' and event['detail']['state'] == 'running':
            instance_id = event['detail']['instance-id']
            # determine if instance is tagged to create an alarm
            instance_info = check_alarm_tag(instance_id, create_alarm_tag)

            # instance has been tagged for alarming, confirm an alarm doesn't already exist
            if instance_info:
                process_alarm_tags(instance_id, instance_info, default_alarms, metric_dimensions_map, sns_topic_arn,
                                   cw_namespace, create_default_alarms_flag, alarm_separator)
        elif 'source' in event and event['source'] == 'aws.ec2' and event['detail']['state'] == 'terminated':
            instance_id = event['detail']['instance-id']
            result = delete_alarms(instance_id)
        elif 'source' in event and event['source'] == 'aws.lambda' and event['detail'][
            'eventName'] == 'TagResource20170331v2':
            logger.debug(
                'Tag Lambda Function event occurred, tags are: {}'.format(event['detail']['requestParameters']['tags']))
            tags = event['detail']['requestParameters']['tags']
            function = event['detail']['requestParameters']['resource'].split(":")[-1]
            process_lambda_alarms(function, tags, create_alarm_tag, default_alarms, sns_topic_arn, alarm_separator)
        elif 'source' in event and event['source'] == 'aws.lambda' and event['detail'][
            'eventName'] == 'DeleteFunction20150331':
            function = event['detail']['requestParameters']['functionName']
            logger.debug('Delete Lambda Function event occurred for: {}'.format(function))
            result = delete_alarms(function)
        elif  'action' in event and event['action'] == 'scan':
            logger.debug(
                f'Scanning for EC2 instances with tag: {create_alarm_tag} to create alarm'
            )
            scan_and_process_alarm_tags(create_alarm_tag, default_alarms, metric_dimensions_map, sns_topic_arn,
                                   cw_namespace, create_default_alarms_flag, alarm_separator)

    except Exception as e:
        # If any other exceptions which we didn't expect are raised
        # then fail the job and log the exception message.
        logger.error('Failure creating alarm: {}'.format(e))
        raise