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

本地Node.js连接AWS RDS Postgres时出现connect ETIMEDOUT错误求助

本地Node.js Express应用连接AWS RDS Postgres数据库遇ETIMEDOUT错误

测试本地Node.js Express应用连接AWS RDS上的Postgres数据库时,出现connect ETIMEDOUT 172.31.97.43:5432错误。已完成AWS RDS的以下配置:

  • 入站和出站规则设为允许所有流量
  • 公开访问权限设为Yes

数据库连接配置文件database.ts代码如下:

import {Pool}  from "pg";

export const client = new Pool({
    host     : 'omerenma.cs6txkhiualn.us-east-1.rds.amazonaws.com',
    user     : '********',
    password : '********',
    port     : 5432,
    connectionTimeoutMillis:30000
  })

client.connect(function(err) {
    if (err) {
      console.error('Database connection failed: ' + err.stack);
      return;
    }
  
    console.log('Connected to database.');
  });

// 此处存在问题:连接尝试时立即终止连接
***client.end()***

错误截图:
错误截图

排查与解决建议

  1. 修复代码逻辑
    代码中client.connect后立即调用client.end(),会导致连接刚发起就被强制关闭,直接移除这行代码,避免提前终止连接流程。

  2. 验证网络连通性
    在本地终端执行以下命令测试RDS端点的5432端口是否可达:

    nc -zv omerenma.cs6txkhiualn.us-east-1.rds.amazonaws.com 5432
    # Windows系统可使用
    telnet omerenma.cs6txkhiualn.us-east-1.rds.amazonaws.com 5432
    

    如果命令返回无法连通,说明本地网络(防火墙、路由器、ISP)拦截了5432端口流量,需检查本地网络设置。

  3. 复查AWS安全配置

    • 确认RDS实例关联的安全组确实已开放入站5432端口(源设为0.0.0.0/0),且安全组正确绑定到实例。
    • 检查RDS所在VPC的网络访问控制列表(NACL),确保入站和出站规则都允许5432端口的流量(NACL为无状态,需双向配置)。
    • 确认RDS实例的公开访问设置为Yes,且所在子网已关联互联网网关,确保实例能被公网访问。
  4. 核对数据库权限
    登录Postgres数据库,执行以下命令检查连接规则,确保允许外部IP访问:

    SELECT * FROM pg_hba_file_rules;
    

    若规则中未允许0.0.0.0/0或你的本地IP,需修改pg_hba.conf添加对应规则并重启数据库。

  5. 确认实例状态与端点
    在AWS RDS控制台确认实例处于可用状态,核对端点地址omerenma.cs6txkhiualn.us-east-1.rds.amazonaws.com是否与配置一致。

内容的提问来源于stack exchange,提问作者Onyebuchi Kingsley Omerenma

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 09:32:40