[英]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.