2012-02-11 20 views
6

JAVA API'sından önceden oluşturulmuş bir EC2 örneğinin durumunu başlatmayı, durdurmayı ve kontrol etmeyi başardım. Ancak, bu örneğin kamu dns adresini almakta zorlanıyorum. Örnekte StartInstancesRequest ile başladığımdan ve StartInstancesResponse ile yanıt aldığımdan, gerçek Örnek nesnesini alamadım. Benim başlangıç ​​kod aşağıda verilmiştir, çalışır:JAVA API'sından Amazon EC2 Örneğinin Genel DNS'sini Alın

BasicAWSCredentials oAWSCredentials = new BasicAWSCredentials(sAccessKey, sSecretKey); 
AmazonEC2 ec2 = new AmazonEC2Client(oAWSCredentials); 
ec2.setEndpoint("https://eu-west-1.ec2.amazonaws.com"); 
List<String> instanceIDs = new ArrayList<String>(); 
instanceIDs.add("i-XXXXXXX"); 

StartInstancesRequest startInstancesRequest = new StartInstancesRequest(instanceIDs); 
try { 
     StartInstancesResult response = ec2.startInstances(startInstancesRequest); 
     System.out.println("Sent! "+response.toString()); 
    }catch (AmazonServiceException ex){ 
     System.out.println(ex.toString()); 
     return false; 
    }catch(AmazonClientException ex){ 
     System.out.println(ex.toString()); 
     return false; 
    } 

takdir edilecektir JSch üzerinden bu örneğine bağlanırken yoluyla herhangi bir yardım yanında.

Çok teşekkürler!

cevap

7

İşte hile yapacak bir yöntem. Bu çağrılmadan önce durumun çalışma durumunda olduğunu kontrol etmek en iyisidir.

String getInstancePublicDnsName(String instanceId) { 
    DescribeInstancesResult describeInstancesRequest = ec2.describeInstances(); 
    List<Reservation> reservations = describeInstancesRequest.getReservations(); 
    Set<Instance> allInstances = new HashSet<Instance>(); 
    for (Reservation reservation : reservations) { 
     for (Instance instance : reservation.getInstances()) { 
     if (instance.getInstanceId().equals(instanceId)) 
      return instance.getPublicDnsName(); 
     } 
    } 
    return null; 
} 
+0

Kusursuz çalıştım, çok teşekkürler! – jatha

1

describeInstances kullanırken Artık bir filtre kullanabilirsiniz, böylece tüm örnekleri için bilgi çekmeyin.

aws-java-sdk-1.9.35.jar'u kullanarak.