如何在Boto3中的AWS中获取未标记的实例?

时间:2017-03-21 13:03:59

标签: python amazon-web-services amazon-ec2 boto3 aws-cli

我想获取未被某些特定键标记但未能获得所需输出的实例是我的代码

import boto3
import json
import time
import os

client = boto3.client('ec2')
response = client.describe_instances(
#    DryRun=True|False,
    Filters=[
        {
            'Name': 'tag: elasticbeanstalk:environment-name',
            'Values': [
                'Not tagged'
            ]
        }
    ]
)
print(response)

输出我正在

{u'Reservations': [], 'ResponseMetadata': {'RetryAttempts': 0, 'HTTPStatusCode': 200, 'RequestId': 'b66a2bb5-ac75-4bc1-b359-fdac50fdfaee', 'HTTPHeaders': {'transfer-encoding': 'chunked', 'vary': 'Accept-Encoding', 'server': 'AmazonEC2', 'content-type': 'text/xml;charset=UTF-8', 'date': 'Tue, 21 Mar 2017 12:55:12 GMT'}}}

参考:boto3 reference

2 个答案:

答案 0 :(得分:1)

据我所知,底层API不支持这种过滤。找到它的唯一方法是查询所有内容,或查询特定状态的机器子集,例如 RUNNING ,然后在python中对未标记资源进行过滤。

请参阅此相关问题:http://docs.confluent.io/current/streams/developer-guide.html

答案 1 :(得分:0)

我之前使用过以下内容来获取未标记的EC2的InstanceIds,您可以稍微修改一下代码以获得所需的输出。

希望有所帮助:

$ python get_untagged_ec2.py
InstanceID: i-012345abcdefg, RunningState: running
InstanceID: i-123456hijklmn, RunningState: running
InstanceID: i-234567opqrstu, RunningState: running

上述代码的输出如下所示:

mainloop