1

我正在尝试通过 Fiddler 使用 Neptune END Point 发送 HTTP Post 请求来连接到 Amazon Neptune 实例。但最终出现超时错误。可以使用 fiddler/Postman 通过 HTTP 请求连接 Neptune 实例吗?

4

3 回答 3

3

如果您在连接到数据库时看到超时,第一步是检查您是否与端点建立了网络连接。

尝试:telnet endpoint port

如果您有连接,您会看到如下内容:

Trying 172.217.5.110...
Connected to endpoint (172.217.5.110).
Escape character is '^]'

如果这确实有效,那么任何 HTTP 客户端都应该能够连接到您的数据库。(卷曲,邮递员等)

如果 telnet 不起作用,那么几乎可以肯定您没有正确配置 EC2 安全组。您需要做的要点是:

  1. 创建一个安全组(例如“ec2”)并将其附加到您的 EC2 客户端实例。默认情况下,此安全组应允许到所有 IP 的出站连接。如果不是这种情况,请添加它。

  2. 创建一个安全组(比如“db”)。在入站规则中,添加一个允许入站 TCP 连接到您的数据库端口的规则,并将源作为在 #1 中创建的安全组。

  3. 现在修改您的 Neptune 集群,并将“db”附加到它。

  4. 安全组更改传播得非常快,因此您应该能够使用 telnet 对其进行测试。

您可能会发现其他答案表明您需要数据库和 EC2 实例位于同一安全组中。这并不完全正确,这只是上述步骤的一种特殊情况,您可以为数据库和客户端实例使用一个安全组,而不是创建 2 个安全组。从安全和设计的角度来看,最好为数据库和客户端实例设置单独的安全组。

正确配置所有网络设置后,确认 telnet 可以正常工作。之后,您可以使用您选择的客户端发出 HTTP 请求。例如:

> curl http://my-endpoint:port/status

healthy

希望这可以帮助。

于 2018-08-21T01:54:24.237 回答
1

超时错误最常见的原因是您与 Neptune 实例不在同一个 VPC 上。
请通过hping以下示例进行检查:
sudo hping3 -S -p 8182 [YOUR NEPTUNE ENDPOINT]
如果 hping 无法 ping 它,那么您不在同一个 VPC 上。
因此,只需创建一个 EC2 实例(在与 NEPTUNE 实例相同的 VPC 上)并将其用作 VPN,我个人使用这个setup-ipsec-vpn
如果您的 EC2 使用的是 Ubuntu,那么只需执行以下操作:
wget https://git.io/vpnsetup -O vpnsetup.sh && sudo sh vpnsetup.sh
然后将您获得的凭据设置到您的计算机,启动 VPN 连接并重试该hping部分以测试连接。

于 2018-04-17T12:13:58.823 回答
0

是的,AWS Neptune 端点可以使用邮递员连接,我能够使用以下命令成功地将 TinkerPop 现代图从 S3 加载到海王星数据库实例。

'Content-Type: application/json' \
    http://your-neptune-endpoint:8182/loader -d '
    { 
      "source" : "s3://neptune-us-east-1/tinkerpopmodern/", 
      "format" : "csv", 
      "accessKey" : "access-key-id", 
      "secretKey" : "secret-key", 
      "region" : "us-east-1", 
      "failOnError" : "FALSE",
      "mode" : "NEW"
    }'
于 2018-03-27T20:30:47.840 回答