Reputation: 2662
I need to start new instance in ec2 from my java code. 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".
I do not need elastic IP. It is ok if all new instances have new addresses.
So, how to change my request for it?
Upvotes: 0
Views: 293
Reputation: 2662
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.
Upvotes: 1