6

最新の 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());

実行すると、次の出力が得られます。

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

これはとても簡単に思えますが、うまくいかないようです。1 つのノードで ElastiCache クラスターを開始しましたが、getCacheNodes() を呼び出すとリストが空になります。このコードをローカルと EC2 インスタンスで実行しようとしましたが、どちらも同じ結果になりました。

私が間違っている可能性があることについてのアイデアはありますか?

4

1 に答える 1

8

Not able to get cache nodes from ElastiCache clusterに対する AWS チームの回答によると、オプションの ShowDetails フラグを使用して、メソッドdescribeCacheClusters()のClass DescribeCacheClustersRequestパラメータを介してCacheNodes 情報を取得する必要があります。実際にこのクラスについて文書化されているにもかかわらず、よく見るとShowDetailsフラグはありません。

オプションの ShowDetails フラグを使用して、キャッシュ クラスタに関連付けられたキャッシュ ノードに関する詳細情報を取得できます。詳細には、キャッシュ ノード エンドポイントの DNS アドレスとポートが含まれます。

おそらく、これは実際にはsetShowCacheNodeInfo()をターゲットにしています。これは、キャッシュ ノード情報を取得するための DescribeCacheCluster リクエストに含めることができるオプションのフラグです

そのため、AWS チームの回答は不正確に見え、実際には疑問に答えていません。なぜClass CacheClusterのメソッドgetCacheNodes()がその情報を返さないのか、そのような投稿ではどちらも非常に珍しいことです。

とにかく、代わりに、クラスDescribeCacheClustersResultのメソッドgetCacheClusters()によって返されるクラス CacheClusterのメソッドgetCacheNodes()を試してみてください。

幸運を!


アップデート

以下は、サンダーが目標を達成するために成功裏に使用したコードであり、上記のアプローチを確認しています。

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());
}
于 2012-03-13T22:12:52.250 に答える