使用Java查找AWS ElastiCache端点

使用Java查找AWS ElastiCache端点,java,amazon-web-services,memcached,amazon-elasticache,Java,Amazon Web Services,Memcached,Amazon 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: " +

我正在尝试使用最新的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<CacheNode> listCache = cc.getCacheNodes();

System.out.println("List size: " + listCache.size());
这看起来很简单,但似乎不起作用。我已经用一个节点启动了一个ElastiCache集群,但是当我调用getCacheNodes()时,列表变成空的。我尝试在本地和EC2实例上运行这段代码,两次都得到了相同的结果


关于我可能做错了什么有什么想法吗?

根据AWS团队对的响应,您需要使用可选的ShowDetails标志,通过方法的参数获取CacheNodes信息。仔细看,尽管有针对此类的文档记录,但没有ShowDetails标志:

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

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

所以AWS团队的回答似乎不准确,实际上并没有解决这个问题,为什么MethodFrom没有返回这些信息,这两个问题对于此类帖子来说都是非常不寻常的

无论如何,您可能只想尝试由method from返回的method from,希望它能像广告一样工作(也就是说,我自己还没有尝试过)

祝你好运


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

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());
}
List cacheClusters=clusterResult.getCacheClusters();
用于(缓存群集缓存群集:缓存群集){
List cacheNodes=cacheCluster.getCacheNodes();
System.out.println(“列表大小:+cacheNodes.size());
}

先生,您是对的。以下是更新的代码:
code
AmazonElastiCacheClient=newamazonelasticacheclient(凭证);DescribeCacheClustersRequest dccRequest=新的DescribeCacheClustersRequest();dccRequest.setShowCacheNodeInfo(true);DescribeCacheClustersResult clusterResult=客户端。describeCacheClusters(dccRequest)
code
@SanderSmith:感谢您跟进您的解决方案,确认此方法!我相应地更新了答案.OMG,这很奇怪,在尝试获取.getCacheNodes()时没有警告、错误或异常。上面的代码返回0 cacheCluster,即使我创建了1。可能是什么问题?@rohitkadam19-默认AWS区域可能会有所不同,具体取决于您使用的是管理控制台、CLI还是SDK。因此,当例如手动通过控制台(即ElastiCache集群)创建某些内容,然后尝试以编程方式访问它时,很容易遇到这种不匹配的情况-您是否检查过在这两种情况下使用的是相同的区域?我遇到了完全相同的问题!!
List<CacheCluster> cacheClusters = clusterResult.getCacheClusters();
for (CacheCluster cacheCluster : cacheClusters) {
    List<CacheNode> cacheNodes = cacheCluster.getCacheNodes();

    System.out.println("List size: " + cacheNodes.size());
}