You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS Lambda通过Bolt驱动查询AWS Neptune超时无响应求助

问题分析与解决方案

1. 驱动版本兼容性问题

Neptune Serverless 1.2.0.1引擎的Bolt协议兼容Neo4j 4.4.x版本,但你使用的是neo4j-driver 4.3.3,版本不匹配会导致驱动与Neptune之间的结果拉取逻辑不一致,Promise无法正常resolve。

  • 解决:升级neo4j-driver到4.4.x系列(推荐4.4.11),该版本与Neptune 1.2.0.1的Bolt实现完全兼容。

2. 事务代码中Promise未正确返回

你的测试代码里,tx.run().then()回调仅打印结果但未返回结果,导致session.writeTransaction()的Promise一直处于pending状态,最终触发Lambda超时。

  • 修复后的代码:
const session = driver.session();
try {
    const result = await session.writeTransaction(async tx => {
        const queryResult = await tx.run(`MATCH (n) RETURN n`);
        console.log('result', queryResult);
        return queryResult; // 必须返回结果,让事务Promise resolve
    })
} finally {
    await session.close()
}

或者简化写法:

const session = driver.session();
try {
    const result = await session.writeTransaction(tx =>
        tx.run(`MATCH (n) RETURN n`)
            .then(result => {
                console.log('result', result);
                return result; // 关键:返回结果
            })
    )
} finally {
    await session.close()
}

3. VPC与安全组配置验证

虽然连接已建立,但仍需确认:

  • Neptune安全组允许Lambda所在安全组的**8182端口(Bolt协议)**入站流量;
  • Lambda安全组允许出站到Neptune集群的8182端口;
  • Lambda与Neptune处于同一VPC的同一子网(或路由可达),确保没有网络ACL限制流量。

4. 驱动连接池适配Lambda特性

Lambda执行环境是短暂的,默认的连接池配置可能不适用:

  • 配置maxConnectionPoolSize: 1,避免单Lambda实例创建过多连接;
  • 缩短连接超时和套接字超时,适配Lambda的执行时长限制:
const driver = neo4j.driver(
    'bolt://db-neptune-3.cluster-****.us-west-1.neptune.amazonaws.com:8182',
    neo4j.auth.basic('your-username', 'your-password'),
    {
        maxConnectionPoolSize: 1,
        connectionTimeout: 3000, // 3秒连接超时
        socketTimeout: 3000      // 3秒套接字超时
    }
);

5. 验证Neptune查询日志

通过CloudWatch查看Neptune的查询日志,确认:

  • 查询是否成功执行并返回所有结果;
  • 是否有未捕获的错误或异常信息。

内容的提问来源于stack exchange,提问作者Mike

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 01:32:21