AWS EC2 Java SDK:使用自定义实例类型启动实例

AWS EC2 Java SDK:使用自定义实例类型启动实例,java,amazon-web-services,amazon-ec2,aws-java-sdk,Java,Amazon Web Services,Amazon Ec2,Aws Java Sdk,我试图通过Java代码启动一个EC2实例。我在项目中添加了此maven依赖项: 它为我提供了一个类,可用于请求启动实例。代码如下: StartInstancesRequest startReq = new StartInstancesRequest() .withInstanceIds(instanceID); ec2Client.startInstances(startReq); 但是,在startInstanceRequest类中没有with*方法,该方

我试图通过Java代码启动一个EC2实例。我在项目中添加了此maven依赖项:

它为我提供了一个类,可用于请求启动实例。代码如下:

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

ec2Client.startInstances(startReq);
但是,在
startInstanceRequest
类中没有
with*
方法,该方法以实例类型作为输入


有人能告诉我如何指定实例类型吗?

startInstances调用实际上用于启动处于停止状态的实例-这就是它使用实例ID的原因

我要自定义实例时使用。使用它,您可以执行以下操作:

RunInstancesRequest runInstancesRequest = new RunInstancesRequest();

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


这有很多自定义项,您可以用来配置新实例。

如果您不想使用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);

从映像创建实例看起来很昂贵。根据您的经验,从AMI创建实例需要多少时间?通常一分钟左右。启动一台停止的机器速度更快,但一旦它最初启动,您就不能进行太多定制。使之尽可能快的传统方法是使用一个定制的AMI,该AMI已经安装了您的所有软件,并且在实例启动时立即可用。