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

从AWS Lambda访问AWS RDS PostgreSQL数据库失败排查求助

排查AWS Lambda Node.js访问RDS PostgreSQL提示“数据库不存在”问题

问题描述

编写用于访问AWS RDS PostgreSQL数据库的AWS Lambda Node.js示例代码,运行时提示“数据库不存在”错误。

环境配置:

  • Lambda与RDS处于同一VPC中
  • RDS安全组入站规则:PostgreSQL类型、TCP协议、5432端口,来源为Lambda安全组
  • Lambda安全组出站规则目标为RDS安全组

Lambda代码(index.js):

const { Client } = require("pg");

exports.handler = async (event) => {
    const client = new Client({
        user: process.env.DB_USER,
        host: process.env.DB_HOST,
        database: process.env.DB_NAME,
        password: process.env.DB_PASSWORD,
        port: 5432,
    });

    try {
        await client.connect();
        const res = await client.query("SELECT NOW()");
        await client.end();

        return {
            statusCode: 200,
            body: JSON.stringify({ message: "Connection successful!", time: res.rows[0] }),
        };
    } catch (error) {
        return {
            statusCode: 500,
            body: JSON.stringify({ error: error.message }),
        };
    } 
}

已完成的操作:

  • 本地安装pg库,将index.js与pg相关文件打包为ZIP上传至Lambda
  • 配置了代码中使用的4个环境变量,且DB_NAME与RDS中创建的数据库名称一致

排查与解决步骤

  • 验证环境变量实际值
    在Lambda代码的try块开头添加日志,打印process.env.DB_NAME的实际值,确认是否和RDS数据库名完全匹配:

    console.log("DB_NAME:", process.env.DB_NAME);
    

    注意:PostgreSQL数据库名默认区分大小写,若创建时用双引号定义了大小写敏感的名称,环境变量需严格对应。

  • 确认目标数据库存在于RDS实例
    通过本地PostgreSQL客户端或RDS控制台查询编辑器连接实例,执行以下命令列出所有数据库:

    SELECT datname FROM pg_database;
    

    检查输出中是否包含指定的DB_NAME,注意大小写完全匹配。

  • 检查数据库用户的连接权限
    验证DB_USER是否拥有目标数据库的连接权限,执行以下SQL(替换占位符):

    SELECT has_database_privilege('your_db_user', 'your_db_name', 'CONNECT');
    

    若返回f,执行授权命令:

    GRANT CONNECT ON DATABASE your_db_name TO your_db_user;
    
  • 排查网络与实例状态

    • 确认Lambda所在子网与RDS实例子网路由表无限制,同一VPC下默认互通,但需排除子网隔离配置
    • 检查RDS实例状态为可用,排除创建、重启或维护中的情况
    • 在同一VPC内的EC2实例上用相同参数测试连接,若EC2连接失败,问题集中在RDS或网络;若EC2成功,排查Lambda配置
  • 确认pg依赖打包完整
    确保打包ZIP包含pg模块所有依赖,且本地安装时使用的Node.js版本与Lambda运行时版本一致。建议用npm install pg --production安装生产依赖后再打包。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 15:42:04