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

无法通过PostgreSQL与SQLAlchemy连接AWS RDS问题求助

AWS RDS PostgreSQL连接超时问题解决

问题详情

通过AWS Easy Create(默认配置)创建RDS PostgreSQL实例,已开启Publicly accessible,但使用FastAPI结合SQLAlchemy连接时出现超时错误。

连接代码

from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

SQLALCHEMY_DATABASE_URL = "postgresql://USER:PASSWORD@HOST/DB"

engine = create_engine(SQLALCHEMY_DATABASE_URL)
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)

Base = declarative_base()

错误信息

conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
sqlalchemy.exc.OperationalError: (psycopg2.OperationalError) connection to server at "database-1.cshqjmfxxxxx.eu-central-1.rds.amazonaws.com" (3.72.174.85), port 5432 failed: Connection timed out (0x0000274C/10060)
        Is the server running on that host and accepting TCP/IP connections?

实例配置截图

数据库实例配置

排查与修复步骤

  • 检查安全组入站规则:
    RDS实例的安全组必须允许应用所在IP访问5432端口。进入RDS控制台实例详情页,找到关联的安全组,编辑入站规则:
    • 规则类型选PostgreSQL,协议TCP,端口5432
    • 源地址填写应用服务器的公网IP(测试阶段可临时用0.0.0.0/0,生产环境务必限制具体IP段)
  • 验证连接参数正确性:
    确认SQLALCHEMY_DATABASE_URL中的HOST是RDS实例的完整端点地址(而非IP),用户名、密码、数据库名完全匹配实例配置。
  • 测试网络连通性:
    在应用服务器上执行nc -zv <RDS端点> 5432或telnet <RDS端点> 5432,如果无法连通,说明网络层面存在拦截,优先排查安全组和VPC网络ACL。
  • 确认实例状态:
    检查RDS实例是否处于可用状态,排除实例创建中、维护中的情况。
  • 核对数据库权限:
    确保连接使用的数据库用户拥有CONNECT权限,可通过RDS控制台的查询编辑器登录验证。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 17:30:32