0

我是使用 boto 进行 ec2 python 编程的新手。

我使用来自连接对象的request_spot_instances方法请求现场实例。这将返回SpotInstanceRequest对象的列表。

我需要知道我的实例何时运行,所以我想使用instance.update()instance.state属性等方法。

但是如何将我的请求对象转换为实例对象?

甚至连接对象中的getInstances()方法也返回一个ResultSet对象,而不是一个实例列表。

谢谢您的帮助。

4

1 回答 1

2

在最初使用该方法请求 Spot 实例后request_spot_instances,您需要通过定期调用get_all_spot_instance_requests以查看您的请求是否已完成来监控请求的进度。例如,这个调用:

import boto.ec2
conn = boto.ec2.connect_to_region('us-west-2')
fulfilled = conn.get_all_spot_instance_requests(filters={'status-code': 'fulfilled'})

将返回已完成的现场实例请求列表。该列表中的每个SpotInstanceRequest对象都将具有一个名为的属性,该属性instance_id将是由现场实例请求创建的实例的 ID。要将其转换为 Instance 对象,请执行以下操作:

reservations = conn.get_all_instances(instance_ids=fulfilled[0].instance_id)
instance = reservations[0].instances[0]

instance变量现在应该是一个 Instance 对象,表示在您的现场实例请求中创建的实例。

于 2013-11-14T16:56:38.520 回答