Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Java SDK从AWS EMR集群获取主公共DNS值_Java_Amazon Web Services_Dns_Aws Sdk_Amazon Emr - Fatal编程技术网

使用Java SDK从AWS EMR集群获取主公共DNS值

使用Java SDK从AWS EMR集群获取主公共DNS值,java,amazon-web-services,dns,aws-sdk,amazon-emr,Java,Amazon Web Services,Dns,Aws Sdk,Amazon Emr,我需要通过Java SDK获取主公共DNS值。在应用程序开始时,我将获得的唯一信息是ClusterName,它是静态的 到目前为止,我已经能够提取出我需要的所有其他信息,除了这个和这个,不幸的是,对于应用程序的成功至关重要 这是我目前正在使用的代码: List<ClusterSummary> summaries = clusters.getClusters(); for (ClusterSummary cs: summaries) { if (

我需要通过Java SDK获取主公共DNS值。在应用程序开始时,我将获得的唯一信息是ClusterName,它是静态的

到目前为止,我已经能够提取出我需要的所有其他信息,除了这个和这个,不幸的是,对于应用程序的成功至关重要

这是我目前正在使用的代码:

List<ClusterSummary> summaries = clusters.getClusters();
        for (ClusterSummary cs: summaries) {
            if (cs.getName().equals("test") && WHITELIST.contains(cs.getStatus().getState())) {
                ListInstancesResult instances = emr.listInstances(new ListInstancesRequest().withClusterId(cs.getId()));
                clusterHostName = instances.getInstances().get(0).toString();
                jobFlowId = cs.getId();
            }
        }

不要使用ListInstances。相反,使用DescribeCluster,它作为MasterPublicDnsName字段之一返回。

来扩展Jonathon提到的内容:

        AmazonEC2Client ec2 = new AmazonEC2Client(cred);
    DescribeInstancesResult describeInstancesResult = ec2.describeInstances(new DescribeInstancesRequest().withInstanceIds(clusterInstanceIds));
    List<Reservation> reservations = describeInstancesResult.getReservations();
    for (Reservation res : reservations) {
        for (GroupIdentifier group : res.getGroups()) {
            if (group.getGroupName().equals("ElasticMapReduce-master")) { // yaaaaaaaaah, Wahay!
                masterDNS = res.getInstances().get(0).getPublicDnsName();
            }
        }
    }
AmazonEC2Client ec2=新的AmazonEC2Client(cred);
DescribeInstancesResult DescribeInstancesResult=ec2.describeInstances(新的DescribeInstancesRequest()。带有InstanceId(ClusterInstanceId));
List reservations=descripbeinstancesresult.getReservations();
对于(预订:预订){
对于(GroupIdentifier组:res.getGroups()){
如果(group.getGroupName().equals(“ElasticMapReduce master”){//yaaaaaaaah,哇!
masterDNS=res.getInstances().get(0.getPublicDnsName();
}
}
}

下面是获取公共DNS名称的工作代码。

是的,我应该早点结束这个问题,谢谢!
        AmazonEC2Client ec2 = new AmazonEC2Client(cred);
    DescribeInstancesResult describeInstancesResult = ec2.describeInstances(new DescribeInstancesRequest().withInstanceIds(clusterInstanceIds));
    List<Reservation> reservations = describeInstancesResult.getReservations();
    for (Reservation res : reservations) {
        for (GroupIdentifier group : res.getGroups()) {
            if (group.getGroupName().equals("ElasticMapReduce-master")) { // yaaaaaaaaah, Wahay!
                masterDNS = res.getInstances().get(0).getPublicDnsName();
            }
        }
    }
 AWSCredentials credentials_profile = null;
 credentials_profile = new 
 DefaultAWSCredentialsProviderChain().getCredentials();

 AmazonElasticMapReduceClient emr = new 
 AmazonElasticMapReduceClient(credentials_profile);
    Region euWest1 = Region.getRegion(Regions.US_EAST_1);
    emr.setRegion(euWest1);
 DescribeClusterFunction fun = new DescribeClusterFunction(emr);
    DescribeClusterResult res = fun.apply(new 
 DescribeClusterRequest().withClusterId(clusterId));
    String publicDNSName =res.getCluster().getMasterPublicDnsName();