AWS EC2 Java SDK: запуск экземпляра с настраиваемым типом экземпляра

Я пытаюсь запустить экземпляр EC2 с помощью кода Java. Я добавил эту зависимость maven в свой проект:

https://mvnrepository.com/artifact/com.amazonaws/aws-java-sdk-ec2/1.11.308

Он предоставляет мне класс, который можно использовать для запроса запуска экземпляра. Код выглядит следующим образом:

StartInstancesRequest startReq = new StartInstancesRequest()
                .withInstanceIds(instanceID);

ec2Client.startInstances(startReq);

Но в классе StartInstancesRequest нет with* метода, который принимает в качестве входных данных тип экземпляра.

Может ли кто-нибудь сказать мне, как я могу указать тип экземпляра?


person Prakhar Mishra    schedule 16.04.2018    source источник


Ответы (2)


Вызов startInstances действительно используется для запуска экземпляров, находящихся в остановленном состоянии, поэтому он принимает идентификаторы экземпляров.

Я использую runInstances, когда я хочу настроить экземпляр. С его помощью вы можете делать такие вещи, как:

RunInstancesRequest runInstancesRequest = new RunInstancesRequest();

runInstancesRequest.withImageId("ami-4b814f22")
                   .withInstanceType("m1.small")
                   .withMinCount(1)
                   .withMaxCount(1)
                   .withKeyName("my-key-pair")
                   .withSecurityGroups("my-security-group");

(взято непосредственно из Запустите Amazon EC2 Экземпляр).

Здесь есть множество настроек, которые вы можете использовать для настройки нового экземпляра.

person stdunbar    schedule 16.04.2018
comment
Создание экземпляра из изображения выглядит дорого. Сколько времени (исходя из вашего опыта) требуется для создания экземпляра из AMI? - person Prakhar Mishra; 16.04.2018
comment
Обычно минуту или около того. Запуск остановленной машины происходит быстрее, но вы не сможете многое настроить после ее первоначального запуска. Традиционный способ сделать это как можно быстрее - использовать настраиваемый AMI, в котором все ваше программное обеспечение уже установлено и доступно сразу после запуска экземпляра. - person stdunbar; 16.04.2018

Если вы не хотите использовать AMI и использовать runInstances, почему бы не изменить тип экземпляра перед запуском экземпляра следующим образом

// Change the instance type
ModifyInstanceAttributeRequest modReq = new ModifyInstanceAttributeRequest()
.withInstanceType(instanceType)
.withInstanceId(instanceID);

ec2client.modifyInstanceAttribute(modReq);

// Then start your instance
StartInstancesRequest startReq = new StartInstancesRequest()
            .withInstanceIds(instanceID);

ec2Client.startInstances(startReq);
person Rodel    schedule 19.04.2018