2016-02-14 9 views
0

Я разрабатываю веб-приложение .net, которое создает и управляет экземплярами ec2 программно. На данный момент, когда я создаю новые экземпляры, размер тома диска фиксируется: я уверен, определяется изображением (AMI).AWS. Net SDK Создайте экземпляр Amazon EC2 с конкретным объемом объема EBS

Я хотел бы предопределить размер тома диска при создании нового экземпляра, чтобы после этого мне не нужно было запускать операцию изменения размера. Это возможно? Какой был бы лучший подход?

У меня есть несколько идей:

  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

Вам нужно установить значение (целое GIB) в VolumeSize в EbsBlockDevice в запускRequest. BlockDeviceMappings перед запуском.

Помните, что если вы укажете моментальный снимок, размер тома должен быть равен или больше размера моментального снимка. Кроме того, если вы создаете том из моментального снимка и не указываете размер тома, по умолчанию используется размер моментального снимка.

TIP: Всегда проверяйте логическое значение DeleteOnTermination, а также и не предполагает, что имеет значение по умолчанию Истинного для томов корня, как и в AWS консоли.

You can find out more on EbsBlockDevice properties here

+1

На самом деле это не совсем то, что я намеревался. Это создает второй том EBS: на основе ImageId есть еще один пустой, определенный на 'launchRequest.BlockDeviceMappings'. Я предпочел иметь один большой объем. – nest

+1

Я думаю, что вы можете выполнить то, что хотите, установив параметр SnapshotId в идентификатор моментального снимка корневого тома AMI. –

+0

Я этого не понимаю. У AMI нет SnapshotId, не так ли? – nest