使用Java查找AWS ElastiCache端点

我正在尝试使用最新的Java AWS SDK以编程方式从我的Java应用程序中获取ElastiCache端点列表。 事情似乎没有用 – 我可以找到一个有效的CacheCluster,但是当我列出它的节点时,它是空的。 这是我的代码:

CacheCluster cc = it.next(); System.out.println("Cache node type: " + cc.getCacheNodeType()); System.out.println("Number cache nodes: " + cc.getNumCacheNodes()); List listCache = cc.getCacheNodes(); System.out.println("List size: " + listCache.size()); 

当我运行它时,我得到以下输出:

 Cache node type: cache.m1.small Number cache nodes: 1 List size: 0 

这似乎很简单,但似乎不起作用。 我已经启动了一个带有单个节点的ElastiCache集群,但是当我调用getCacheNodes()时列表显示为空。 我试图在本地和EC2实例上运行此代码,我两次都得到同样的东西。

关于我可能做错的任何想法?

根据AWS团队对无法从ElastiCache集群获取缓存节点的响应,您需要使用可选的ShowDetails标志通过方法describeCacheClusters()的类DescribeCacheClustersRequest参数获取CacheNodes信息 。 尽管如此,尽管已经记录了这个类,但是看得更近没有ShowDetails标志:

可选的ShowDetails标志可用于检索与缓存集群关联的缓存节点的详细信息。 详细信息包括缓存节点端点的DNS地址和端口。

据推测,这实际上是针对setShowCacheNodeInfo() ,这是一个可选标志,可以包含在DescribeCacheCluster请求中以检索缓存节点信息

所以AWS团队的响应似乎不精确,实际上并没有解决这个问题,为什么来自Class CacheCluster的方法getCacheNodes()没有返回那些信息,这对于这些post来说都很不寻常。

无论如何,您可能只是想尝试从类CacheCluster中获取方法getCacheNodes() ,而不是来自类DescribeCacheClustersResult的 getCacheClusters()方法返回,希望它可以像广告一样工作(即我自己没有尝试过)。

祝你好运!


更新

以下是Sander成功实现其目标的代码,确认了上述方法:

 AmazonElastiCacheClient client = new AmazonElastiCacheClient(credentials); DescribeCacheClustersRequest dccRequest = new DescribeCacheClustersRequest(); dccRequest.setShowCacheNodeInfo(true); DescribeCacheClustersResult clusterResult = client.describeCacheClusters(dccRequest); 

缺失的部分应与他的初始解决方案类似,例如:

 List cacheClusters = clusterResult.getCacheClusters(); for (CacheCluster cacheCluster : cacheClusters) { List cacheNodes = cacheCluster.getCacheNodes(); System.out.println("List size: " + cacheNodes.size()); }