2016-03-04 71 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