阻止亚马逊aws / ec2图像的设备映射

时间:2013-05-15 07:44:32

标签: python amazon-ec2 amazon boto

我有两个相关的问题 - 或问题 - 与亚马逊ec2 API。 虽然我真的想使用python和boto包,这就是我的方式 提供下面的代码,我得到完全相同的结果 等效的shell ec2- *命令。

首先,我想从基于Debian的公共AMI图像中生成一个实例, 但我想要一个更大的根“分区”(因为我想安装额外的 不在图像中的Debian软件包)。文件引导了我 相信我应该做这样的事情:

import boto.ec2 as BE
import boto.ec2.blockdevicemapping as BEM

conn=BE.connect_to_region('us-east-1')
bdt=BEM.BlockDeviceType()
# I want a 10G root device, not a 1G 
bdt.size=10
bdm=BEM.BlockDeviceMapping()
bdm['/dev/sda1']=bdt
reservations=conn.run_instances('ami-1234abcd', key_name='mykey',
                                instance_type='m1.medium', block_device_map=bdm)

然而,这似乎绝对没有效果。该实例产生的很好, 正确的图像和一切,但根设备仍然只是1G: - (

所以,那么我想也许我需要以某种方式初始化BlockDeviceMapping 我修改它之前的图像。我试过这样的话:

bdm=conn.get_image_attribute('ami-1234abcd', attribute='blockDeviceMapping')

这会导致一些奇怪的异常跟踪说'尝试过 未经授权的操作'或类似。甚至对于图像也会发生这种情况 我自己通过冻结另一个实例创建的!

创建时很容易修改设备配置 在可怕的网络界面中的实例。请告诉我该怎么做 编程!感谢。

1 个答案:

答案 0 :(得分:0)

您的代码看起来是正确的。

尝试使用相同的代码启动Ubuntu AMI(您可以在此处找到它们:http://cloud-images.ubuntu.com/locator/ec2/

当Ubuntu AMI启动时,它会查看根块设备。如果设备大于根文件系统,它将自动调整根文件系统的大小以填充根块设备。没有大惊小怪 - 其他一切都是一样的。

这几乎总是你想要发生的事情。

如果适用于Ubuntu,至少你知道你的代码是正确的。然后你只需要弄清楚如何调整Debian rootfs的大小(或者只是使用Ubuntu)。