【发布时间】:2021-10-20 16:35:24
【问题描述】:
我正在使用来自 gremlin_python.driver 的 client.Client 类连接到 AWS Neptune。见下文
def _prepare_request(method, url, *, data=None, params=None, headers=None, service='neptune-db'):
_ = requests.Session()
request = requests.Request(method=method, url=url, data=data, params=params, headers=headers)
credentials = Session().get_credentials()
frozen_creds = credentials.get_frozen_credentials()
req = AWSRequest(method=method, url=url, data=data, params=params, headers=headers)
SigV4Auth(frozen_creds, service, os.environ['AWS_REGION']).add_auth(req)
prepared_iam_req = req.prepare()
request.headers = dict(prepared_iam_req.headers)
return request.prepare()
# https
http_protocol = 'https'
uri = f'{http_protocol}://{self.host}:{self.port}/gremlin'
request = _prepare_request('GET', uri)
# wss
ws_url = 'wss://{}:{}/gremlin'.format(self.host, self.port)
ws_request = httpclient.HTTPRequest(ws_url, headers=dict(request.headers))
self.conn = client.Client(ws_request, 'g')
现在我的问题是如何使用上面的 client.Client 对象来获取遍历对象“g”。
https://pypi.org/project/gremlinpython/#description 有一个类似的例子显示了这一点。但是我不能在上面的代码中使用DriverRemoteConnection。
>>> from gremlin_python.process.anonymous_traversal import traversal
>>> from gremlin_python.driver.driver_remote_connection import DriverRemoteConnection
>>> g = traversal().withRemote(DriverRemoteConnection('ws://localhost:8182/gremlin','g'))
【问题讨论】:
-
感觉有点像您在这里尝试重新创建轮子。我们已经有一个 gremlin-python 的 Neptune 特定实现,可以帮助在此处进行 SigV4 签名:github.com/awslabs/amazon-neptune-tools/tree/master/…
标签: python amazon-web-services gremlin amazon-neptune