簡體   English   中英

在AWS上請求現場實例時,如何附加現有EBS卷?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM