2012-02-11 10 views
6

से अमेज़ॅन ईसी 2 इंस्टेंस का सार्वजनिक DNS प्राप्त करें मैंने जावा एपीआई से पहले बनाए गए ईसी 2 इंस्टेंस की स्थिति को शुरू, बंद और जांचने में कामयाब रहा है। हालांकि, मुझे इस उदाहरण के सार्वजनिक डीएनएस पते प्राप्त करने में कठिनाई हो रही है। चूंकि मैं StartInstancesRequest के साथ इंस्टेंस प्रारंभ करता हूं और StartInstancesResponse के साथ प्रतिक्रिया प्राप्त करता हूं, इसलिए मैं वास्तविक इंस्टेंस ऑब्जेक्ट को पुनर्प्राप्त करने में सक्षम नहीं हो सका। मेरे शुरू कर कोड नीचे दिया गया है, यह काम करता है:जावा एपीआई

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

JSch के माध्यम से इस उदाहरण से कनेक्ट होने की सराहना की होगी के माध्यम से किसी भी मदद के अलावा।

बहुत बहुत धन्यवाद!

उत्तर

7

यहां एक तरीका है जो चाल करेगा। यह जांचना सबसे अच्छा होगा कि यह कॉल करने से पहले उदाहरण चल रहा है।

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

बेकार ढंग से काम किया, बहुत बहुत धन्यवाद! – jatha

1

जब describeInstances का उपयोग कर अब आप एक फिल्टर का उपयोग कर सकते हैं, तो आप अपने सभी उदाहरणों के लिए जानकारी खींच नहीं है।

private String GetDNS(String aInstanceId) 
{ 
    DescribeInstancesRequest request = new DescribeInstancesRequest(); 
    request.withInstanceIds(aInstanceId); 
    DescribeInstancesResult result = amazonEC2.describeInstances(request); 

    for (Reservation reservations : result.getReservations()) 
    { 
    for (Instance instance : reservations.getInstances()) 
    { 
     if (instance.getInstanceId().equals(aInstanceId)) 
     { 
     return instance.getPublicDnsName(); 
     } 
    } 
    } 

    return null; 
} 

aws-java-sdk-1.9.35.jar का उपयोग करना।

संबंधित मुद्दे