2

我有以下基于文档的代码......

@Controller
@RequestMapping("neptune")
public class NeptuneEndpoint {
    @GetMapping("")
    @ResponseBody
    public String test(){
        Cluster.Builder builder = Cluster.build();
        builder.addContactPoint("...endpoint...");
        builder.port(8182);

        Cluster cluster = builder.create();

        GraphTraversalSource g = EmptyGraph.instance()
                                           .traversal()
                                           .withRemote(
                                               DriverRemoteConnection.using(cluster)
                                           );

        GraphTraversal t = g.V().limit(2).valueMap();

        t.forEachRemaining(
                e ->  System.out.println(e)
        );

        cluster.close();
        return "Neptune Up";
    }
}

但是当我尝试跑步时,我得到...

java.util.concurrent.TimeoutException:等待可用主机时超时 - 如果此消息仍然存在,请检查客户端配置和与服务器的连接

另外,我将如何从 AWS IAM 账户添加密钥?

4

5 回答 5

3

Neptune 不允许您从本地计算机连接到数据库实例。您只能通过与 Neptune 相同的 VPC 内的 EC2 连接到 Neptune(aws 文档)。

尝试制作此代码的可运行 jar 并在 ec2 中运行它,代码应该可以正常工作。如果您尝试从本地系统调试某些内容,请使用 PuTTY 实例隧道连接到 ec2,然后将其转发到海王星集群。

于 2018-07-28T11:39:33.120 回答
2

您是否创建了启用 IAM 身份验证的实例?

如果是,您将必须使用 SigV4 签署您的请求。有关如何使用 SigV4 进行连接的更多信息(和示例),请访问https://docs.aws.amazon.com/neptune/latest/userguide/iam-auth-connecting-gremlin-java.html

上述文档中给出的示例还包含有关如何使用 IAM 凭证连接到 Neptune 集群的信息。

于 2018-07-01T01:20:56.790 回答
1

我只是遇到了同样的问题,根本原因是与 Netty 的依赖版本冲突,不幸的是这是一个非常普遍的依赖。Gremlin 3.3.2 使用io.netty/netty-all版本4.0.56.Final. 您可能会发现您的项目依赖于另一个 Netty jar,例如io.netty/nettyio.netty/netty-handler两者都可能导致问题,因此您需要将它们从 POM 中的其他依赖项中排除或使用托管依赖项来设置项目级别的 Netty 版本。

于 2018-07-03T15:27:08.840 回答
0

另一种选择是使用 AWS SigV4 签名代理,充当 Neptune 和本地开发环境之间的桥梁。这些代理之一是https://github.com/monken/aws4-proxy

npm install --global aws4-proxy
# have your credentials exported as AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY
aws4-proxy --service neptune-db --endpoint cluster-die4eenu.cluster-eede5pho.eu-west-1.neptune.amazonaws.com --region eu-west-1
wscat localhost:3000/gremlin
于 2020-03-12T12:37:14.317 回答
-1

参考这个

注意:您需要在同一个 VPC 中才能访问 Neptune 集群。

于 2020-11-05T19:12:49.107 回答