简体   繁体   English

使用公共IP启动EC2实例

[英]Start ec2 instance with public ip

I need to start new instance in ec2 from my java code. 我需要从Java代码在ec2中启动新实例。 I can do it by: 我可以这样做:

    RunInstancesRequest runInstancesRequest = new RunInstancesRequest();

runInstancesRequest
    .withImageId(myImageId)
    .withInstanceType(myInstanceType)
    .withMinCount(INSTANCES_COUNT)
    .withMaxCount(INSTANCES_COUNT)
    .withKeyName(myKeyName)
    .withSubnetId(mySubnetId)
    .withSecurityGroupIds(mySecurityGroupId)
    .withPlacement(myPlace)
;

RunInstancesResult runInstancesResult = amazonEC2Client.runInstances(runInstancesRequest);

And it creates a new instance. 并创建一个新实例。 But this instance has empty fields "Public DNS" and "Public IP". 但是此实例的空字段为“公共DNS”和“公共IP”。

I do not need elastic IP. 我不需要弹性IP。 It is ok if all new instances have new addresses. 如果所有新实例都具有新地址,则可以。

So, how to change my request for it? 那么,如何更改我的要求呢?

Thanks! 谢谢! I have found the solution: 我找到了解决方案:

RunInstancesRequest runInstancesRequest = new RunInstancesRequest();

InstanceNetworkInterfaceSpecification interfaceSpecification = new InstanceNetworkInterfaceSpecification()
    .withSubnetId(mySubnetId)
    .withAssociatePublicIpAddress(true)
    .withGroups(mySecurityGroupId)
    .withDeviceIndex(0);

runInstancesRequest
    .withImageId(myImageId)
    .withInstanceType(myInstanceType)
    .withMinCount(INSTANCES_COUNT)
    .withMaxCount(INSTANCES_COUNT)
    .withKeyName(myKeyName)
    //.withSubnetId(mySubnetId)
    //.withSecurityGroupIds(mySecurityGroupId)
    .withPlacement(myPlace)
    .withNetworkInterfaces(interfaceSpecification)
;

RunInstancesResult runInstancesResult = amazonEC2Client.runInstances(runInstancesRequest);

I do not know what is "DeviceIndex", and why it is "0", but it works. 我不知道什么是“ DeviceIndex”,为什么不为“ 0”,但是它可以工作。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM