如何使用HTTP POST / GET请求连接/查询AWS Neptune实例

时间:2018-03-03 19:16:19

标签: amazon-neptune

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

3 个答案:

答案 0 :(得分:0)

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

'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"
    }'

答案 1 :(得分:0)

超时错误最常见的原因是您与海王星实例不在同一个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部分以测试连接。

答案 2 :(得分:0)

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

尝试:telnet endpoint port

如果您具有连通性,则会看到以下内容:

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

如果这行得通,那么任何HTTP客户端都应该能够连接到您的数据库。 (CURL,POSTMAN等)

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

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

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

  3. 现在修改您的Neptune群集,并在其上附加“ db”。

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

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

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

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

healthy

希望这会有所帮助。