2016-02-14 101 views
0

我正在開發一個以編程方式創建和管理ec2實例的.net Web應用程序。到目前爲止,當我創建新實例時,磁盤卷的大小是固定的:我認爲由映像(AMI)定義。AWS .Net SDK使用特定的EBS卷大小創建Amazon EC2實例

我想在創建新實例時預先定義磁盤卷的大小,以便後面不需要運行調整大小操作。那可能嗎?這將是最好的方法?

我有幾個想法:

  1. 定義RunInstancesRequest對象的音量大小。但我認爲沒有這樣的選擇。

  2. 使用不同的磁盤大小創建AMI映像的副本,並使用該副本請求新的EC2實例。這可以做到嗎?

  3. 其他/更好的方法?

在情況下,幫助,我附上了代碼,我目前使用要求新的實例:

var launchRequest = new RunInstancesRequest() 
    { 
     ImageId = amiID, 
     InstanceType = type, 
     MinCount = 1, 
     MaxCount = 1, 
     SecurityGroupIds = groups 
    }; 
    var launchResponse = ec2Client.RunInstances(launchRequest); 
    var instances = launchResponse.Reservation.Instances; 
    var myInstance = instances.First(); 

回答

3

您需要設置VolumeSizeEbsBlockDevice的(整數GIB)值launchRequestBlockDeviceMappings發射前。

請記住,如果您指定快照,則卷大小必須等於或大於快照大小。另外,如果您要從快照創建卷並且不指定卷大小,則默認值爲快照大小。

提示:經常檢查DeleteOnTermination以及的布爾值,不要以爲它的根卷默認值作爲AWS控制檯。

You can find out more on EbsBlockDevice properties here

+1

其實它並不是我的意圖。這會創建第二個EBS卷:有一個基於ImageId,另一個是在'launchRequest.BlockDeviceMappings'上定義的另一個空的。我更喜歡有一個更大的音量。 – nest

+1

我想你可以通過將SnapshotId參數設置爲AMI根卷的快照ID來完成你想要的操作 –

+0

我並不真正理解這一點。 AMI沒有SnapshotId,是嗎? – nest

相關問題