在python脚本中使用预留标识号

时间:2013-12-09 16:01:08

标签: boto

当我使用boto发起新实例时,我会收到预订ID。但是如何在python脚本中使用该预留ID?

myreservation = conn.run_instances('ami-999c9999', placement='us-east-1a', key_name='nov15_key',instance_type='m1.xlarge',security_groups=['NuoDB-1-0-1-AutogenByAWSMP-'])

下一行无法按预期工作:

myinstanceid = conn.get_all_instances(filters={'reservation-id':myreservation})[0].instances[0]

如果我在代码中添加预订ID,它将毫无问题地工作。

myinstanceid = conn.get_all_instances(filters={'reservation-id':'r-1e654a79'})[0].instances[0]

我想知道预订ID的类型以及如何使用它。

1 个答案:

答案 0 :(得分:2)

从文档中,run_instances返回:

返回: 与机器请求相关联的boto.ec2.instance.Reservation

根据the docs,预留还包含一个实例槽,其中包含boto.ec2.instance.Instance对象的列表。它还有一个“id”插槽。

如果您需要预订ID:

myreservation.id

如果你想要实例id:

myreservation.instances[0].id

因此,Reservation对象已经拥有您要查找的所有信息,无需进行后续查找调用。但如果你需要,你可能想尝试这个:

myinstance = conn.get_all_instances(filters={'reservation-id':myreservation.id})[0]

或者更好的是,这个:

myinstanceid = conn.get_all_instances(filters={'reservation-id':myreservation.id})[0].id