[英]How can I attach an existing EBS volume when requesting a spot instance on AWS?
我正在使用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)。 為什么?
我認為這里的問題是您無法使用BlockDeviceMapping將現有卷附加到實例。 BlockDeviceMapping允許您指定卷大小或快照ID。 如果指定大小,它將創建該大小的新空白卷,並將其附加到您指定的設備。 如果指定了snapshot-id,它將從該快照創建一個新卷並附加它。
如果要將現有卷附加到實例,則必須使用attach_volume
方法,該方法只能在具有實例ID后運行。
那么,你可能會問,為什么boto的EBSBlockDeviceType有一個volume_id
屬性? 這是因為當我們執行get_all_instances
調用時,AWS為BlockDeviceMapping返回的數據包括當前連接的EBS卷的volume_id
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.