【问题标题】:Starting multiple instances and wait until they are completely started using boto3使用 boto3 启动多个实例并等待它们完全启动
【发布时间】:2017-11-11 06:53:07
【问题描述】:

我正在使用以下代码开始一堆EC2Instances

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

【问题讨论】:

    标签: amazon-web-services amazon-ec2 boto3


    【解决方案1】:

    使用

    试试这个:

    ec2 = boto3.client('ec2')
    start_ec2_instances(instanceids)
    waiter = ec2.get_waiter('instance_running')
    waiter.wait(InstanceIds=instanceids)
    

    waiter 函数每 15 秒轮询一次,直到达到成功状态。检查失败 40 次后返回错误。

    【讨论】:

      【解决方案2】:

      您可以使用 EC2 客户端的 Waiter.wait 调用来传递 EC2 实例 ID 数组。

      http://boto3.readthedocs.io/en/latest/reference/services/ec2.html#EC2.Waiter.InstanceRunning

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-13
        • 1970-01-01
        • 2018-08-09
        • 2010-10-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多