在AWS上请求spot实例时,如何附加现有EBS卷?

2024-09-27 00:16:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我用的是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)。为什么?在


Tags: 代码devidmytypeec2botovolume
1条回答
网友
1楼 · 发布于 2024-09-27 00:16:59

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

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

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

相关问题 更多 >

    热门问题