无法将boto3过滤后的数据发送到列表

时间:2016-08-25 13:12:40

标签: python anaconda boto3

我使用anaconda python 2.7生成了一个有效的boto3实例过滤器。我需要将IP地址和实例名称分配给列表以供进一步处理。

代码如下所示:

for instance in instances:
    print(instance.id, instance.instance_type, instance.key_name, instance.private_ip_address, instance.public_dns_name ,instance.tags[0].get("Value"))

tagged   = ec2.instances.filter(Filters=[{'Name': 'tag:My', 'Values': ['tag']}])

for instance in tagged:
    print(name, instance.id, instance.private_ip_address)

object_list={}
object_list['requests']=[]

for instance in tagged:
        tagged.collections.OrderedDict()
        tagged['ip-address'] = instance.private_ip_address
        tagged['machine'] = name
        tagged['roles'] = ['tagged',instance.id,name]
        object_list['requests'].append(tagged)

这是错误:

AttributeError: 'ec2.instancesCollection' object has no attribute 'collections'

思想?

1 个答案:

答案 0 :(得分:0)

这不存在,但您有一个神秘的错误,因为您正在重复使用tagged变量,ec2.instancesCollection

的实例
 tagged.collections.OrderedDict()

(无论如何都不会做任何事,因为它没有受到影响)

你(可能)想要/想要:

tagged = collections.OrderedDict()

但这没有意义,因为你已经在tagged上进行了迭代。

您必须声明另一个变量

for instance in tagged:
    t = collections.OrderedDict()
    t['ip-address'] = instance.private_ip_address
    t['machine'] = name
    t['roles'] = ['tagged',instance.id,name]
    object_list['requests'].append(t)