ceg*_*ash 5 python amazon-web-services graph-databases amazon-neptune
我在aws中创建了一个海王星实例。我现在如何连接到它?
我从笔记本电脑本地尝试了文档中给出的示例。
from gremlin_python.structure.graph import Graph
from gremlin_python.driver.driver_remote_connection import DriverRemoteConnection
graph = Graph()
g = graph.traversal().withRemote(DriverRemoteConnection('ws://my_endpoint:8182/gremlin','g'))
print(g.V().limit(2).toList())
Run Code Online (Sandbox Code Playgroud)
但是我在以下堆栈跟踪中获得了超时异常
File "/home/cegprakash/.virtualenvs/cegprakash-6Wq6Rd61/lib/python3.5/site-packages/gremlin_python/driver/driver_remote_connection.py", line 45, in __init__
password=password)
File "/home/cegprakash/.virtualenvs/cegprakash-6Wq6Rd61/lib/python3.5/site-packages/gremlin_python/driver/client.py", line 76, in __init__
self._fill_pool()
File "/home/cegprakash/.virtualenvs/cegprakash-6Wq6Rd61/lib/python3.5/site-packages/gremlin_python/driver/client.py", line 88, in _fill_pool
conn = self._get_connection()
File "/home/cegprakash/.virtualenvs/cegprakash-6Wq6Rd61/lib/python3.5/site-packages/gremlin_python/driver/client.py", line 101, in _get_connection
self._transport_factory, self._executor, self._pool)
File "/home/cegprakash/.virtualenvs/cegprakash-6Wq6Rd61/lib/python3.5/site-packages/gremlin_python/driver/connection.py", line 40, in __init__
self.connect()
File "/home/cegprakash/.virtualenvs/cegprakash-6Wq6Rd61/lib/python3.5/site-packages/gremlin_python/driver/connection.py", line 46, in connect
self._transport.connect(self._url)
File "/home/cegprakash/.virtualenvs/cegprakash-6Wq6Rd61/lib/python3.5/site-packages/gremlin_python/driver/tornado/transport.py", line 33, in connect
lambda: websocket.websocket_connect(url))
File "/home/cegprakash/.virtualenvs/cegprakash-6Wq6Rd61/lib/python3.5/site-packages/tornado/ioloop.py", line 458, in run_sync
return future_cell[0].result()
File "/home/cegprakash/.virtualenvs/cegprakash-6Wq6Rd61/lib/python3.5/site-packages/tornado/concurrent.py", line 238, in result
raise_exc_info(self._exc_info)
File "<string>", line 4, in raise_exc_info
File "/home/cegprakash/.virtualenvs/cegprakash-6Wq6Rd61/lib/python3.5/site-packages/tornado/stack_context.py", line 316, in wrapped
ret = fn(*args, **kwargs)
File "/home/cegprakash/.virtualenvs/cegprakash-6Wq6Rd61/lib/python3.5/site-packages/tornado/simple_httpclient.py", line 307, in _on_timeout
raise HTTPError(599, error_message)
tornado.httpclient.HTTPError: HTTP 599: Timeout while connecting
Run Code Online (Sandbox Code Playgroud)
数据库连接时缺少任何身份验证吗?
连接问题通常归因于您的安全组设置的某些问题。这已经在另一个问题中得到了回答[1]。在这里发布回复,以防有帮助。
如果您在连接到数据库时看到超时,第一步是检查是否有到端点的网络连接。
尝试:telnet endpoint port
如果您有连接,您会看到类似这样的内容:
Trying 172.217.5.110...
Connected to endpoint (172.217.5.110).
Escape character is '^]'
Run Code Online (Sandbox Code Playgroud)
如果这确实有效,那么任何 HTTP 客户端都应该能够连接到您的数据库。(卷曲、邮递员等)
如果 telnet 不起作用,则几乎可以肯定您没有正确配置 EC2 安全组。您需要做的要点是:
创建一个安全组(例如“ec2”)并将其附加到您的 EC2 客户端实例。默认情况下,此安全组应允许到所有 IP 的出站连接。如果不是这种情况,请添加它。
创建一个安全组(例如“db”)。在入站规则中,添加一条允许入站 TCP 连接到数据库端口的规则,并将源设置为 #1 中创建的安全组。
现在修改您的 Neptune 集群,并将“db”附加到它。
安全组更改传播得非常快,因此您应该能够使用 telnet 进行测试。
您可能会找到其他答案,表明您需要数据库和 EC2 实例位于同一安全组中。这并不完全正确,这只是上述步骤的一个特例,您可以为数据库和客户端实例使用单个安全组,而不是创建 2 个安全组。从安全和设计的角度来看,最好为数据库和客户端实例设置单独的安全组。
希望这可以帮助。
| 归档时间: |
|
| 查看次数: |
843 次 |
| 最近记录: |