【问题标题】:How can I attach an existing EBS volume when requesting a spot instance on AWS?在 AWS 上请求 Spot 实例时,如何附加现有的 EBS 卷?
【发布时间】:2013-02-09 22:26:25
【问题描述】:

我用的是boto,代码是这样的:

dev_xvdb = boto.ec2.blockdevicemapping.EBSBlockDeviceType(volume_id='vol-xxxxxx')
bdm = boto.ec2.blockdevicemapping.BlockDeviceMapping()
bdm['/dev/xvdb'] = dev_xvdb

rs = ec2.request_spot_instances(price=MY_MAX_PRICE,
                                image_id='ami-xxxxx',
                                count=1,
                                type='one-time',
                                key_name='MY_KEY_NAME',
                                security_groups=['default'],
                                instance_type='t1.micro',
                                block_device_map=bdm)

此代码可以正常运行,但无法附加 EBS 卷(id=vol-xxxxxx)。为什么?

【问题讨论】:

    标签: python amazon-web-services amazon-ec2 boto


    【解决方案1】:

    我认为这里的问题是您无法使用 BlockDeviceMapping 将现有卷附加到实例。 BlockDeviceMapping 允许您指定卷大小或快照 ID。如果您指定大小,它将创建一个该大小的新空白卷并将其附加到您指定的设备。如果您指定快照 ID,它将从该快照创建一个新卷并附加它。

    如果您想将现有卷附加到实例,您必须使用 attach_volume 方法,该方法只能在您拥有实例 ID 后运行。

    那么,您可能会问,为什么 boto 的 EBSBlockDeviceType 有 volume_id 属性?这是因为当我们调用 get_all_instances 时,AWS 为 BlockDeviceMapping 返回的数据包括当前连接的 EBS 卷的 volume_id

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-29
      • 2017-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-28
      • 1970-01-01
      相关资源
      最近更新 更多