0

botoを使用したec2 pythonプログラミングは初めてです。

接続オブジェクトからメソッドrequest_spot_instancesでスポット インスタンスをリクエストします。これにより、 SpotInstanceRequestオブジェクトのリストが返されます。

インスタンスがいつ実行されているかを知る必要があるため、 instance.update()instance.state属性などのメソッドを使用したいと考えています。

しかし、リクエスト オブジェクトをインスタンス オブジェクトに変換するにはどうすればよいでしょうか。

接続オブジェクトのgetInstances()メソッドでさえ、インスタンス リストではなくResultSetオブジェクトを返します。

ご協力ありがとうございました。

4

1 に答える 1

2

メソッドを使用して最初にスポット インスタンスをリクエストした後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 であるという属性があります。これをインスタンス オブジェクトに変換するには、次のようにします。

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

変数は、instanceスポット インスタンス リクエストで作成されたインスタンスを表すインスタンス オブジェクトになります。

于 2013-11-14T16:56:38.520 に答える