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

时间:2018-04-16 14:49:52

标签: java amazon-web-services amazon-ec2 aws-java-sdk

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

https://www.amazontrust.com/repository/

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

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

ec2Client.startInstances(startReq);

但是,with*类中没有StartInstancesRequest方法,它将实例类型作为输入。

任何人都可以告诉我如何指定实例类型?

2 个答案:

答案 0 :(得分:0)

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

当我想自定义实例时,我使用runInstances。有了它,你可以做以下事情:

RunInstancesRequest runInstancesRequest = new RunInstancesRequest();

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

(直接取自Run an Amazon EC2 Instance)。

您可以使用大量自定义来配置新实例。

答案 1 :(得分:0)

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