aws lambda超时执行海王星查询



我是AWS Neptune和gremlin的新手,并试图让我的lambda函数运行一个简单的查询,但它们正在挂起,lambda函数在我得到响应之前超时。我根据AWS文档建立了连接,但很难执行任何查询并返回数据。我有一个EC2实例,我可以通过gremlin控制台连接到数据库,并且可以在那里运行查询,我只有在lambda函数中运行它们的问题。

connection.ts

const gremlin = require('gremlin');
const {getUrlAndHeaders} = require('gremlin-aws-sigv4/lib/utils');
const traversal = gremlin.process.AnonymousTraversalSource.traversal;
const DriverRemoteConnection = gremlin.driver.DriverRemoteConnection;
let conn = null;
let g = null;
export function connection(){
const getConnectionDetails = () => {
if (process.env['USE_IAM'] == 'true'){
return getUrlAndHeaders(
process.env['NEPTUNE_ENDPOINT'],
process.env['NEPTUNE_PORT'],
{},
'/gremlin',
'wss'); 
} else {
const database_url = 'wss://' +  "my database endpoing" + ':' + "8182" + '/gremlin';
return { url: database_url, headers: {}};
}      
};
const createRemoteConnection = () => {
const { url, headers } = getConnectionDetails();

const c = new DriverRemoteConnection(
url, 
{ 
mimeType: 'application/vnd.gremlin-v2.0+json', 
headers: headers 
});  

c._client._connection.on('close', (code, message) => {
console.info(`close - ${code} ${message}`);
if (code == 1006){
console.error('Connection closed prematurely');
throw new Error('Connection closed prematurely');
}
});  

return c;       
};

const createGraphTraversalSource = (conn) => {
return traversal().withRemote(conn);
};

if (conn == null){
console.info("Initializing connection")
conn = createRemoteConnection();
g = createGraphTraversalSource(conn);
}
return g;

}

index.ts

import {connection} from "./connection"
export async function handler(event, context): Promise<any> {
const g = connection()
let result;
console.log("before query") // this gets called
const user =  await g.V('1').values("name").next(); // hangs here
console.log("after query")  //This never gets executed
return user
}
有谁知道我可能做错了什么吗?

我的问题是我需要将lambda函数添加到与我的数据库相同的VPC

最新更新