【发布时间】:2020-06-25 11:35:17
【问题描述】:
我无法连接到启用了 IAM 的海王星实例。我遵循了 AWS 文档(在途中纠正了一些愚蠢的错误),但没有运气。
当我使用 SigV4Signer 通过我的 Java 应用程序连接时,当我使用 gremlin 控制台时,我收到 400 bad request websocket 错误。
o.a.t.g.d.Handler$GremlinResponseHandler : Could not process the response
io.netty.handler.codec.http.websocketx.WebSocketHandshakeException: Invalid handshake response getStatus: 400 Bad Request
at io.netty.handler.codec.http.websocketx.WebSocketClientHandshaker13.verify(WebSocketClientHandshaker13.java:267)
at io.netty.handler.codec.http.websocketx.WebSocketClientHandshaker.finishHandshake(WebSocketClientHandshaker.java:302)
at org.apache.tinkerpop.gremlin.driver.handler.WebSocketClientHandler.channelRead0(WebSocketClientHandler.java:69)
当我运行com.amazon.neptune.gremlin.driver.example.NeptuneGremlinSigV4Example(从我的机器通过端口转发和从 EC2 跳转主机)我得到:
java.util.concurrent.TimeoutException: Timed out while waiting for an available host - check the client configuration and connectivity to the server if this message persists
我可以使用旧的已弃用证书机制连接到我的海王星实例。我正在使用 jumphost ec2 实例和端口转发。
我相信 SigV4 方面的工作方式与海王星审计日志中的一样,我可以看到连接 aws_access_key 的尝试:
1584098990319, <jumphost_ip>:47390, <db_instance_ip>:8182, HTTP_GET, [unknown], [unknown], "HttpObjectAggregator$AggregatedFullHttpRequest(decodeResult: success, version: HTTP/1.1, content: CompositeByteBuf(ridx: 0, widx: 0, cap: 0, components=0)) GET /gremlin HTTP/1.1 upgrade: websocket connection: upgrade sec-websocket-key: g44zxck9hTI9cZrq05V19Q== sec-websocket-origin: http://localhost:8182 sec-websocket-version: 13 Host: localhost:8182 X-Amz-Date: 20200313T112950Z Authorization: AWS4-HMAC-SHA256 Credential=<my_access_key>/20200313/eu-west-2/neptune-db/aws4_request, SignedHeaders=host;sec-websocket-key;sec-websocket-origin;sec-websocket-version;upgrade;x-amz-date, Signature=<the_signature> content-length: 0", /gremlin
但是当我看的时候
这是我创建的策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"neptune-db:*"
],
"Resource": [
"arn:aws:neptune-db:eu-west-2:<my_aws_account>:*/*"
]
}
]
}
我之前尝试过使用引用我的集群资源 ID 的策略。 我创建了一个新的 api 用户,并将此策略作为其唯一权限。 (我已经试过两次了)。
IAM 显示我创建的图形用户尚未成功登录(duh)。
似乎问题出在沿线某处的 IAM 设置上。是否可以从 AWS 获取有关连接尝试失败原因的更多信息?
我正在使用最新版本的 Neptune 和 3.4.3 Gremlin 驱动程序和控制台。我在运行 NeptuneGremlinSigV4Example 并构建要部署到控制台的库时使用 Java 8。
谢谢
【问题讨论】:
标签: amazon-neptune