Согласно ответу команды AWS на Невозможно получить узлы кэша из кластера ElastiCache , вам потребуется использовать необязательный флаг ShowDetails для получения информации о CacheNodes через класс DescribeCacheClustersRequest параметр метода descriptionCacheClusters () .Если присмотреться, нет флага ShowDetails , хотя, несмотря на то, что он действительно задокументирован для этого класса:
Необязательный флаг ShowDetails можно использовать для получения подробной информации о узлах кэша, связанных сКеш кластера.Подробности включают в себя адрес и порт DNS для конечной точки узла кэша.
Предположительно, это на самом деле нацелено на setShowCacheNodeInfo () , то есть Необязательный флаг, который может быть включен вЗапрос DescribeCacheCluster для получения информации об узлах кэша .
Таким образом, ответ команды AWS выглядит неточным и фактически не решает вопрос, почему метод getCacheNodes () из Class CacheCluster не возвращает эту информацию, что довольно необычно для таких сообщений.
В любом случае, вы можете просто попробовать метод getCacheNodes () из Class CacheCluster как возвращено методом getCacheClusters () из Класс DescribeCacheClustersResult вместо этого, мы надеемся, что он работает как объявлено (то есть я сам не пробовал).
Удачи!
Обновление
Вот код, который Сандер успешно использовал для достижения своей цели, подтверждая изложенный выше подход:
AmazonElastiCacheClient client = new AmazonElastiCacheClient(credentials);
DescribeCacheClustersRequest dccRequest = new DescribeCacheClustersRequest();
dccRequest.setShowCacheNodeInfo(true);
DescribeCacheClustersResult clusterResult = client.describeCacheClusters(dccRequest);
Недостающие фрагменты должны быть аналогичны его первоначальному решению, например:
List<CacheCluster> cacheClusters = clusterResult.getCacheClusters();
for (CacheCluster cacheCluster : cacheClusters) {
List<CacheNode> cacheNodes = cacheCluster.getCacheNodes();
System.out.println("List size: " + cacheNodes.size());
}