Amazon DAX客户端抛出"无端点可用"异常

Iva*_*tyk 3 amazon-dynamodb amazon-vpc amazon-dynamodb-dax

我正在尝试使用以下代码从localhost连接到DAX:

    ClientConfig daxConfig = new ClientConfig()
            .withEndpoints("dax-cluster.yhdqu5.clustercfg.dax.use1.cache.amazonaws.com:8111");
    AmazonDaxClient client = new ClusterDaxClient(daxConfig);
Run Code Online (Sandbox Code Playgroud)

群集已启动并运行,我已在公共子网中创建它并在安全组中打开了端口8111,但尽管如此,我还是收到以下异常:

Caused by: java.io.IOException: No endpoints available
    at com.amazon.dax.client.cluster.Cluster.leaderClient(Cluster.java:560)
    at com.amazon.dax.client.dynamodbv2.ClusterDaxClient$3.getClient(ClusterDaxClient.java:154)
    at com.amazon.dax.client.dynamodbv2.ClusterDaxClient$RetryHandler.makeRequestWithRetries(ClusterDaxClient.java:632)
    ... 10 more
    Suppressed: java.io.IOException: No endpoints available
        ... 13 more
        Suppressed: java.io.IOException: No endpoints available
            ... 13 more
Run Code Online (Sandbox Code Playgroud)

StackOverflow上的其他答案表明这可能是由错误配置的安全组引起的,并且为了测试它我在相同的VPC /子网中启动了一个实例并使用了相同的安全组,我能够ssh到这个主机(22和安全组中打开了8111-st端口).所以应该有一些其他DAX相关的原因.

我的机器上的防火墙已关闭.

但如果我ssh到EC2中的一台机器,那么我可以连接到DAX集群:

[ec2-user@ip-10-0-0-44 ~]$ nc -z dax-cluster.yhdqu5.clustercfg.dax.use1.cache.amazonaws.com 8111
Connection to dax-cluster.yhdqu5.clustercfg.dax.use1.cache.amazonaws.com 8111 port [tcp/*] succeeded!
Run Code Online (Sandbox Code Playgroud)

Abd*_*dad 6

您只能从与DAX群集相同的VPC中的EC2计算机连接到DAX.除非您的localhost是同一VPC中的EC2实例,否则它将无法连接到DAX群集.

  • 您可以使用 VPN 连接来连接另一个云提供商中的开发机器或服务器,以“出现”在与 Dax 集群相同的 VPC 中 (2认同)

myP*_*avi 5

如果您从 lambda 进行调用,请确保 lambda 在同一 vpc 中运行,它已授​​予 iam 角色来访问 dax,并且已为安全组打开 dax 端口