2013-05-15 33 views
2

我有兩個相關的問題 - 或問題 - 與亞馬遜ec2 API。 雖然我真的想要使用python和boto軟件包,這就是我如何使用下面的代碼,但我得到的結果與 等效的shell ec2- *命令完全相同。我想從基於Debian的公共AMI鏡像 產生一個實例,但我想要一個更大的根分區(因爲我想安裝額外的 Debian軟件包,它們不在圖像中)。文檔使我 相信我應該做這樣的事情:亞馬遜aws/ec2映像的塊設備映射

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') 

,這導致一些奇怪的異常跟蹤,說「嘗試 非法操作」或相似的,這種情況即使對於我自己被冰凍另一實例創建的圖像

在可怕的Web界面中創建 實例時,很容易修改設備配置。請以編程方式告訴我如何做到這一點 !謝謝。

+0

您是否嘗試在啓動實例後調整文件系統大小? – garnaat

回答

0

您的代碼看起來正確。

嘗試使用相同的代碼來啓動一個Ubuntu AMI(你可以在這裏找到他們:http://cloud-images.ubuntu.com/locator/ec2/

當一個Ubuntu AMI啓動時,它會看根塊設備。如果設備大於根文件系統,它將自動調整根文件系統的大小以填充根塊設備。沒有大驚小怪 - 其他一切工作都一樣。

這幾乎總是你想要發生的。

如果它適用於Ubuntu,至少你知道你的代碼是正確的。然後你只需要弄清楚如何調整Debian rootfs的大小(或者只是使用Ubuntu)。