我正在使用以下代码
开始一堆EC2
Instances
def start_ec2_instances(self, instanceids):
ec2client = boto3.resource('ec2')
response = ec2client.start_instances(InstanceIds=instanceids)
return
现在它成功启动。但是,我想使用wait_until_running
方法检查实例的状态,并等待所有实例都启动。
wait_until_running
方法只能在单个实例上发布?如何等待使用boto3
这就是我目前正在做的事情。但想知道是否有其他方法可以一次性完成
def wait_until_instance_running(self, instanceids):
ec2 = boto3.resource('ec2')
for instanceid in instanceids:
instance = ec2.Instance(instanceid)
logger.info("Check the state of instance: %s",instanceid)
instance.wait_until_running()
return
答案 0 :(得分:5)
使用
试试这个:
ec2 = boto3.client('ec2')
start_ec2_instances(instanceids)
waiter = ec2.get_waiter('instance_running')
waiter.wait(InstanceIds=instanceids)
服务员功能每15秒轮询一次,直到达到成功状态。 40次检查失败后返回错误。
答案 1 :(得分:1)
您可以使用EC2客户端Waiter.wait
调用来传递EC2实例ID数组。
http://boto3.readthedocs.io/en/latest/reference/services/ec2.html#EC2.Waiter.InstanceRunning