EC2 piops 实例在启动后立即终止,非 piops 实例则罚款

EC2 piops 实例在启动后立即终止,非 piops 实例则罚款

通过 boto 和 Python API 启动 EC2 实例时,我遇到了一个奇怪的问题。只要我不尝试启动预配置的 iops 实例,一切都很好,即使我设置了其他卷映射选项(例如磁盘大小)。

volume_type但是,如果我通过设置为'io1'和设置为 None 以外的值来设置 iops 计数iops,则 run_instances API 调用似乎会成功而没有错误,并且新实例会出现在“待处理”状态,但它们很快就会变为“终止”状态而不会进入“运行”状态。

在下面的代码中,使用boto(Python 2.7 上为 2.6.0) 建立连接conn然后us-east-1再继续:

launch_params = {
        'min_count': n_instances, 'max_count': n_instances,
        'instance_type': 'm1.large',
        'ebs_optimized': True
}
# Launch with provisioned iops or a larger disk if requested (EBS only)
if provisioned_iops is not None or disk_size_gb is not None:
        dev_sda = boto.ec2.blockdevicemapping.EBSBlockDeviceType(connection=conn, size=disk_size_gb, delete_on_termination=True)
        if provisioned_iops is not None:
                dev_sda.iops=int(provisioned_iops)
                dev_sda.volume_type = 'io1'
        bdm = boto.ec2.blockdevicemapping.BlockDeviceMapping()
        bdm['/dev/sda'] = dev_sda
        launch_params['block_device_map'] = bdm

launch_params.update(self.instance_defaults)
launch_params.update(ec2_api_options)
res = conn.run_instances(ami_id, **launch_params)

...如果我尝试启动m1.largeAMI,ebs_optimized=True并且privisioned_iops=500run_instances 调用成功,并且实例显示为待处理,但随后又返回到终止状态,并且系统日志中没有任何内容。

无需配置 iops 即可启动。

答案1

啊。我一发布就发现了这个问题。我会把这个留给其他有同样问题的人:

run_instances在创建实例之前不会完全验证所有参数(顺便说一下,第一个小时会向您收费)。具体来说,它确实不是检查并执行“IOPS 和卷大小之间的最大比率为 10:1”限制或“卷大小必须至少为 10GiB”对 PIOPS 卷的限制。如果您违反这些限制,您的实例将似乎已启动但随后立即终止,如果您启动了多个实例,则将花费您不少钱。

使用 50GB EBS 卷启动将允许 500 IOP。

相关内容