使用Python在AWS Lambda中进行反向搜索

时间:2017-02-27 10:16:21

标签: python amazon-ec2 aws-lambda aws-sdk

我正在尝试获取未附加到自动缩放组的所有实例。来自自动扩展组的所有实例都有一个标签 aws:autoscaling:groupName 。我可以用这个来获得这些实例:

reservations = ec.describe_instances(
    Filters=[
        # Instances in autoscaling group
        {'Name': 'tag-key', 'Values': ['aws:autoscaling:groupName']},
        # Instances should be in running mode
        {'Name': 'instance-state-name', 'Values': ['running']}
    ]
).get(
    'Reservations', []
)

instances = sum(
[
    [i for i in r['Instances']]
    for r in reservations
], [])

print "Number of the instances in autoscaling: %d" % len(instances)

但我真正需要得到的是不在自动缩放中的实例。由于AWS Console中有inverse search,我希望Python中也有。{/ p>

1 个答案:

答案 0 :(得分:1)

以下代码可以为您完成。 boto直到日期没有直接的反向搜索选项。希望有一天,有人会添加该选项:)

https://github.com/boto/boto3/issues/173

reservations = ec.describe_instances(
    Filters=[
        # Instances should be in running mode
        {'Name': 'instance-state-name', 'Values': ['running']}
    ]
)

Count=0
for Instances in reservations['Reservations']:
    for Instance in Instances['Instances']:
        if "aws:autoscaling:groupName" not in str(Instance):
            # your logic on servers without AutoScaling Group goes here
            Count=Count+1

print "Number of the instances Without autoscaling: ", Count