简体   繁体   English

在AWS Lambda函数中访问Neo4j服务器

[英]Accessing a Neo4j server in AWS Lambda function

I have a problem with getting access to my Neo4j database in a Lambda function. 我在Lambda函数中无法访问Neo4j数据库时遇到问题。 I want to build an Alexa skill and in that Alexa skill it should be possible to access a graph database like Neo4j. 我想建立一种Alexa技能,在这种Alexa技能下,应该可以访问Neo4j之类的图形数据库。 I thought that putting the DB into the cloud (with GrapheneDB) would solve this problem, but now it looks like something is wrong with the certification. 我以为将数据库放到云中(使用GrapheneDB)可以解决此问题,但是现在看来认证有些问题。

import org.neo4j.driver.v1.*;
import static org.neo4j.driver.v1.Values.parameters;

public class DB {

public static void main(String...args) {

    Config noSSL = Config.build().withEncryptionLevel(Config.EncryptionLevel.NONE).toConfig();

    Driver driver = GraphDatabase.driver("bolt://xyz.dbs.graphenedb.com:24786", AuthTokens.basic("db","pw"), noSSL); 
    try (org.neo4j.driver.v1.Session session = driver.session()) {
    ...
    }

This code works in my IntelliJ IDE, but when I try to put this code in a sample Lambda function, these errors occur: 该代码在我的IntelliJ IDE中有效,但是当我尝试将此代码放在示例Lambda函数中时,会发生以下错误:

"errorMessage": "Unable to process request: General SSLEngine problem",
  "errorType": "org.neo4j.driver.v1.exceptions.ClientException",
  "stackTrace": [
    "org.neo4j.driver.internal.connector.socket.SocketClient.start(SocketClient.java:85)",
    "org.neo4j.driver.internal.connector.socket.SocketConnection.<init>(SocketConnection.java:63)",
    "org.neo4j.driver.internal.connector.socket.SocketConnector.connect(SocketConnector.java:52)",
    "org.neo4j.driver.internal.pool.InternalConnectionPool$1.allocate(InternalConnectionPool.java:191)",
    "org.neo4j.driver.internal.pool.InternalConnectionPool$1.allocate(InternalConnectionPool.java:180)",
    "org.neo4j.driver.internal.pool.ThreadCachingPool.allocate(ThreadCachingPool.java:212)",
    "org.neo4j.driver.internal.pool.ThreadCachingPool.acquireFromGlobal(ThreadCachingPool.java:164)",
    "org.neo4j.driver.internal.pool.ThreadCachingPool.acquire(ThreadCachingPool.java:118)",
    "org.neo4j.driver.internal.pool.InternalConnectionPool.acquire(InternalConnectionPool.java:109)",
    "org.neo4j.driver.internal.InternalDriver.session(InternalDriver.java:53)",
    "spacegeek.SpaceGeekSpeechlet.startGraphDB(SpaceGeekSpeechlet.java:122)",
    "spacegeek.SpaceGeekSpeechlet.onSessionStarted(SpaceGeekSpeechlet.java:87)",
    "com.amazon.speech.speechlet.SpeechletToSpeechletV2Adapter.onSessionStarted(SpeechletToSpeechletV2Adapter.java:33)",
    "com.amazon.speech.speechlet.SpeechletRequestDispatcher.dispatchSpeechletCall(SpeechletRequestDispatcher.java:102)",
    "com.amazon.speech.speechlet.SpeechletRequestHandler.internalHandleSpeechletCall(SpeechletRequestHandler.java:152)",
    "com.amazon.speech.speechlet.SpeechletRequestHandler.handleSpeechletCall(SpeechletRequestHandler.java:115)",
    "com.amazon.speech.speechlet.lambda.SpeechletRequestStreamHandler.handleRequest(SpeechletRequestStreamHandler.java:89)"
  ],"errorMessage": "Unable to process request: General SSLEngine problem",
  "errorType": "org.neo4j.driver.v1.exceptions.ClientException",
  "stackTrace": [
    "org.neo4j.driver.internal.connector.socket.SocketClient.start(SocketClient.java:85)",
    "org.neo4j.driver.internal.connector.socket.SocketConnection.<init>(SocketConnection.java:63)",
    "org.neo4j.driver.internal.connector.socket.SocketConnector.connect(SocketConnector.java:52)",
    "org.neo4j.driver.internal.pool.InternalConnectionPool$1.allocate(InternalConnectionPool.java:191)",
    "org.neo4j.driver.internal.pool.InternalConnectionPool$1.allocate(InternalConnectionPool.java:180)",
    "org.neo4j.driver.internal.pool.ThreadCachingPool.allocate(ThreadCachingPool.java:212)",
    "org.neo4j.driver.internal.pool.ThreadCachingPool.acquireFromGlobal(ThreadCachingPool.java:164)",
    "org.neo4j.driver.internal.pool.ThreadCachingPool.acquire(ThreadCachingPool.java:118)",
    "org.neo4j.driver.internal.pool.InternalConnectionPool.acquire(InternalConnectionPool.java:109)",
    "org.neo4j.driver.internal.InternalDriver.session(InternalDriver.java:53)",
    "spacegeek.SpaceGeekSpeechlet.startGraphDB(SpaceGeekSpeechlet.java:122)",
    "spacegeek.SpaceGeekSpeechlet.onSessionStarted(SpaceGeekSpeechlet.java:87)",
    "com.amazon.speech.speechlet.SpeechletToSpeechletV2Adapter.onSessionStarted(SpeechletToSpeechletV2Adapter.java:33)",
    "com.amazon.speech.speechlet.SpeechletRequestDispatcher.dispatchSpeechletCall(SpeechletRequestDispatcher.java:102)",
    "com.amazon.speech.speechlet.SpeechletRequestHandler.internalHandleSpeechletCall(SpeechletRequestHandler.java:152)",
    "com.amazon.speech.speechlet.SpeechletRequestHandler.handleSpeechletCall(SpeechletRequestHandler.java:115)",
    "com.amazon.speech.speechlet.lambda.SpeechletRequestStreamHandler.handleRequest(SpeechletRequestStreamHandler.java:89)"
  ],

Can anybody help with that? 有人可以帮忙吗? Or is there a better way to access a Neo4j DB? 还是有更好的方法来访问Neo4j DB?

Solved the problem. 解决了问题。 Simply had to change the encryption settings: 只需更改加密设置即可:

 Config SSL = Config.build().withEncryption().toConfig(); 

Maybe it helps someone. 也许它可以帮助某人。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM