【问题标题】:Cannot connect to AWS Neptune with Gremlin无法使用 Gremlin 连接到 AWS Neptune
【发布时间】:2019-08-10 14:04:40
【问题描述】:

我目前正在尝试访问 AWS Neptune 服务器,但在尝试连接时收到以下错误。

我正在学习 AWS 的本教程,但没有成功:https://docs.aws.amazon.com/neptune/latest/userguide/access-graph-gremlin.html

以前有人遇到过这个问题吗?

我以为是入站/出站规则的原因,但即使我允许所有流量也不起作用。

端点也是正确的。仔细检查。

conf/neptune-remote.yml

hosts: [neptuneTest.cu7geofyk01wr.us-east-1.neptune.amazonaws.com]
port: 8182
serializer: { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV3d0, config: { serializeResultToString: true }}

错误

         \,,,/
         (o o)
-----oOOo-(3)-oOOo-----
plugin activated: tinkerpop.server
plugin activated: tinkerpop.utilities
plugin activated: tinkerpop.tinkergraph
gremlin> :remote connect tinkerpop.server conf/neptune-remote.yaml
ERROR org.apache.tinkerpop.gremlin.driver.Handler$GremlinResponseHandler  - Could not process the response
io.netty.handler.codec.http.websocketx.WebSocketHandshakeException: Invalid handshake response getStatus: 500 Internal Server Error
    at io.netty.handler.codec.http.websocketx.WebSocketClientHandshaker13.verify(WebSocketClientHandshaker13.java:191)
    at io.netty.handler.codec.http.websocketx.WebSocketClientHandshaker.finishHandshake(WebSocketClientHandshaker.java:216)
    at org.apache.tinkerpop.gremlin.driver.handler.WebSocketClientHandler.channelRead0(WebSocketClientHandler.java:69)
    at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)

类似的维基:

【问题讨论】:

  • 嗨,乔恩,有几个问题。您是否能够使用 curl <yourinstancename>:8182/status 形式的简单 curl 访问服务器?您是否从与 Neptune 位于同一 VPC 的 EC2 实例运行 Gremlin 控制台?您是否启用了 IAM 身份验证?
  • 谢谢!我能够得到这个回复:"requestId":"e2b4ccf0-5470-4a5d-0a34-211d4738f5a8","code":"AccessDeniedException","detailedMessage":"Missing Authentication Token"}我已经修复了 IAM 身份验证,现在它可以工作了!

标签: gremlin amazon-neptune


【解决方案1】:

在 Kelvin Lawrence 的帮助下:

curl <yourinstancename>:8182/status

如果您看到以下错误,请修复您的 IAM 角色/权限

"requestId":"e2b4ccf0-5470-4a5d-0a34-211d4738f5a8","code":"AccessDeniedException","detailedMessage":"Missing Authentication Token"}

【讨论】:

  • curl 不再有效,因为您现在需要 sigV4。使用来自github.com/okigan/awscurl的“awscurl”@
  • 这很有帮助。我安装了 awscurl,之后我可以运行 bash 命令
【解决方案2】:

至于 2021 年 6 月,Python 有一种使用 SIG V4 的方法:

如果为 Amazon Neptune 集群启用了 IAM 身份验证,则所有查询请求都必须使用 SIG V4 进行签名。有关详细信息,请参阅 [1]。

[1]https://docs.aws.amazon.com/neptune/latest/userguide/iam-auth-connecting-gremlin-console.html

【讨论】:

    猜你喜欢
    • 2019-06-04
    • 2021-12-07
    • 1970-01-01
    • 2021-12-30
    • 1970-01-01
    • 1970-01-01
    • 2019-03-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多