当我使用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的类型以及如何使用它。
答案 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