使用Java SDK从AWS EMR集群获取主公共DNS值
我需要通过Java SDK获取主公共DNS值。在应用程序开始时,我将获得的唯一信息是ClusterName,它是静态的 到目前为止,我已经能够提取出我需要的所有其他信息,除了这个和这个,不幸的是,对于应用程序的成功至关重要 这是我目前正在使用的代码:使用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 (
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();