出现这个问题的原因是AWS Lambda未正确执行对Neptune数据库进行openCypher查询的HTTP请求。下面是解决方法的代码示例:
import json
import gremlin_python.driver.client as gremlin_client
import os
# 获取Gremlin服务的IP和端口号
gremlin_server = os.environ.get('neptune-endpoint')
gremlin_port = int(os.environ.get('neptune-port'))
def lambda_handler(event, context):
query = event['query']
# 连接到gremlin服务
client = gremlin_client.Client(
f'wss://{gremlin_server}:{gremlin_port}/gremlin',
'g',
username='admin',
password='',
message_serializer=gremlin_client.serializer.GraphSONSerializersV2d0()
)
# 发送openCypher查询
callback_result = client.submit(query)
# 处理结果
if callback_result.done.done():
result_set = callback_result.result().all().result()
return {
"statusCode": 200,
"body": {
"data": result_set
}
}
else:
return {
"statusCode": 400,
"body": {
"message": "OpenCypher query failed"
}
}
这段代码会将AWS Lambda查询Neptune的代码串成 HTTP 请求,并发送到 Nepture 端执行 openCypher 查询。并将执行结果返回给调用方。可以根据自己的需求进行修改。