2016-03-04 108 views
2

我正在使用AWS python API(boto3)。我的腳本啓動了一些實例,然後等待他們上網,然後再繼續進行操作。我希望在預定義的時間段後等待超時,但我無法在Python中找到任何API。有任何想法嗎?我目前的代碼片段:ec2等待實例想出超時[Python]

def waitForInstance(id): 
    runningWaiter = self.ec2c.get_waiter("instance_status_ok") 
    runningWaiter.wait(InstanceIds = [id]) 
    instance = ec2resource.Instance(id) 
    return instance.state 

我當然可以這樣做在一個單獨的線程中運行這段代碼,如果需要終止它,但我不知道是否已經有一個內置的API中boto3爲那我只是想念它。

回答

0

服務員具有與它可以(使用上面的例子)來訪問相關聯的配置:

runningWaiter.config 

一個在此配置中的設置是max_attempts控制多少次嘗試將給予之前被嘗試向上。默認值是40,你可以改變這個值是這樣的:

runningWaiter.config.max_attempts = 10 

這不是直接控制超時你的問題問,但會導致服務員提前放棄。

+0

我寧願以編程方式訪問它。我無法完全預測相關腳本的運行位置。 – Andre

0

爲什麼不時檢查實例狀態?

#code copy from boto3 doc 
for status in ec2.meta.client.describe_instance_status()['InstanceStatuses']: 
    print(status) 

refence:http://boto3.readthedocs.org/en/latest/guide/migrationec2.html

順便說一句,這是更好地使用標籤命名一個標準的命名慣例的所有實例。使用其原始ID查詢任何aws資源是一個維護噩夢。

+0

在我的情況下不是一個大問題,因爲我自動啓動和停止實例。一旦任務完成,實例將被終止並消失 – Andre