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

无法从AWS Fargate公网IP访问连接RDS PostgreSQL的Django应用

解决Fargate与RDS PostgreSQL连接失败的排查步骤

1. 先查安全组的双向权限

  • Fargate任务的安全组:必须配置出站规则,允许访问RDS的5432端口(PostgreSQL默认端口),目标选RDS的安全组ID或者对应的IP段。别只看入站规则,Fargate主动连RDS靠的是出站权限,本地测试时你电脑的出站是开放的,但Fargate的安全组可能默认限制了出站。
  • RDS的安全组:入站规则要允许Fargate任务所在安全组的5432端口访问,别只留你本地的公网IP——很多人本地测试后忘了更新这一步,导致Fargate的请求被RDS安全组挡了。

2. 核对VPC与网络配置

  • 确认Fargate任务和RDS在同一个VPC里,如果跨VPC得配置VPC peering或者中转网关,不然RDS安全组没法直接引用Fargate的安全组。
  • Fargate用awsvpc网络模式的话,检查任务所在子网的路由表:如果RDS是私有访问(公有可访问性关闭),子网得能直接路由到RDS的子网;如果RDS是公网可访问,私有子网里的Fargate得配NAT网关才能出公网。另外别忘了NACLs(网络访问控制列表),这东西是无状态的,要同时允许5432端口的出站请求和入站响应。

3. 检查数据库连接参数

  • 确认Fargate里的连接字符串没写错:
    • RDS的端点地址别拼错,比如把后缀打错了
    • 端口号是不是5432(没改RDS默认端口的话就是这个)
    • 用户名、密码要对,而且得在Fargate任务定义里正确配置环境变量——别本地用.env文件,部署到Fargate却忘了传这些变量。
  • 如果RDS开了公有可访问性,得确保Fargate有公网访问权限;如果关了公有可访问,Fargate必须在同一VPC的私有子网里。

4. IAM权限检查(如果用了IAM数据库认证)

  • 要是你的Django用IAM认证连RDS,得给Fargate任务的执行角色加rds-db:connect权限,还要确保数据库用户绑定了对应的IAM角色。没用到IAM认证的话跳过这步。

5. 直接测试连通性

  • 进Fargate容器里跑命令测RDS端口:
    telnet <你的RDS端点> 5432
    # 或者用nc
    nc -zv <你的RDS端点> 5432
    
    超时的话基本是网络/安全组问题,连接被拒的话大概率是权限或参数错了。可以通过修改任务定义临时加执行命令,或者用aws ecs execute-command进容器(前提是任务开了exec权限)。

6. 查RDS状态与日志

  • 确认RDS实例是可用状态,没在维护或故障中。
  • 看RDS的数据库日志,有没有Fargate任务IP的连接拒绝记录,能帮你快速定位是网络问题还是数据库权限问题。

重点核对提示:

  • Fargate安全组的出站规则是否包含RDS的5432端口
  • RDS安全组的入站规则是否把Fargate的安全组设为源(不是仅本地IP)
  • Fargate的子网能不能访问RDS所在的子网(同一VPC或已配置对等)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 00:55:19