Мне нужно получить главное общедоступное значение DNS через Java SDK. Единственная информация, которую я буду иметь в начале приложения, - это статическое значение ClusterName.Получить общее общедоступное значение DNS из кластера AWS EMR с использованием Java SDK
До сих пор я смог вытащить всю другую информацию, которая мне нужна, за исключением этого и, к сожалению, жизненно важно для приложения, чтобы быть успешным.
Это код, который я в настоящее время работаю с:
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();
}
}
Я удалил получить за PublicIpAddress, как хотел полностью ToString для тестирования. Мне должно быть ясно, что этот метод дает мне DNS, который мне нужен, но у меня нет возможности дифференцировать их.
Если в моем EMR есть 4 машины, я не знаю, какую позицию в списке будет Экземпляр. Для моего основного испытания у меня есть только две машины, 1 мастер и рабочий. .get(0)
возвратил как значения для мастера, так и работника при последовательных запусках.
Информация, которую я могу получить от них, ниже - моя единственная опция, которую я могу видеть на данный момент, - использовать «ReadyDateTime» в качестве идентификатора, поскольку мастер «должен» всегда быть готов первым, но это чувствует себя взломанным, и я надеялся на более чистое решение.
{Id: id,
Ec2InstanceId: id,
PublicDnsName: ec2-54--143.compute-1.amazonaws.com,
PublicIpAddress: 54..143,
PrivateDnsName: ip-10--158.ec2.internal,
PrivateIpAddress: 10..158,
Status: {State: RUNNING,StateChangeReason: {},
Timeline: {CreationDateTime: Tue Feb 21 09:18:08 GMT 2017,
ReadyDateTime: Tue Feb 21 09:25:11 GMT 2017,}},
InstanceGroupId: id,
EbsVolumes: []}
{Id: id,
Ec2InstanceId: id,
PublicDnsName: ec2-54--33.compute-1.amazonaws.com,
PublicIpAddress: 54..33,
PrivateDnsName: ip-10--95.ec2.internal,
PrivateIpAddress: 10..95,
Status: {State: RUNNING,StateChangeReason: {},
Timeline: {CreationDateTime: Tue Feb 21 09:18:08 GMT 2017,
ReadyDateTime: Tue Feb 21 09:22:48 GMT 2017,}},
InstanceGroupId: id
EbsVolumes: []}
Да, я должен был закрыть этот вопрос раньше, спасибо! – null