2016-07-28 7 views
0

Ich muss neue Instanz in EC2 von meinem Java-Code starten. ich kann es von:EC2-Instanz mit öffentlichen IP-

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); 

Und es schafft eine neue Instanz. Diese Instanz hat jedoch leere Felder "Public DNS" und "Public IP".

Ich brauche keine elastische IP. Es ist in Ordnung, wenn alle neuen Instanzen neue Adressen haben.

Also, wie ändere ich meine Anfrage dafür?

Antwort

1

Dank! Ich habe die Lösung gefunden:

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); 

Ich weiß nicht, was „DeviceIndex“, und warum es „0“ ist, aber es funktioniert.

Verwandte Themen