def get_ec2_instance_id()

in functions/source/lambda_function.py [0:0]


def get_ec2_instance_id(instance_tag):
    region = os.environ['AWS_REGION']
    ec2 = boto3.client('ec2', region_name=region)
    filters = [{"Name":"tag:MerakiTag", "Values":[instance_tag]}]
    instances = ec2.describe_instances(Filters=filters)
    instance_id = []
    logger.info('AWS EC2: Checking for vMX instances with instance tag {0}'.format(instance_tag))
    for i in instances['Reservations']:
        instance_id.append(i['Instances'][0]['InstanceId'])
        if i['Instances'][0]['State']['Name'] == 'running':
            logger.info('AWS EC2: Running vMX instance found with tag {0} and instance id {1}'.format(instance_tag, instance_id))
        else:
            logger.info('AWS EC2: Shutdown/Terminated vMX instance found with instance tag {0} and instance id {1}'.format(instance_tag, i['Instances'][0]['InstanceId']))
    if len(instance_id) > 1:
        logger.error('AWS EC2: More that one running instance with the same tag, please remove tag from stale/broken instance')
        logger.error('AWS EC2: The following instances {0}, were found with the tag {1}'.format(instance_id, instance_tag))
        exit
    else:
        return instance_id[0]