仅本地开发可连接AWS数据库,部署后连接超时求助
排查AWS Amplify应用数据库连接超时问题
针对你遇到的ER_GET_CONNECTION_TIMEOUT错误,结合本地正常、云端报错的现象,按以下方向排查:
安全组入站规则遗漏Amplify访问权限
你本地能连接是因为安全组放行了你的本地IP,但Amplify部署的应用服务器IP不在当前规则里,导致数据库拒绝连接超时:
- 如果用的是AWS RDS,先确认Amplify的部署网络环境:
- 若Amplify是无VPC部署:需要将对应AWS区域的Amplify服务IP段添加到RDS安全组的入站规则(可通过AWS官方文档查询区域IP,也可临时开放
0.0.0.0/0测试,生产环境务必收紧)。 - 若Amplify配置了VPC访问:直接将Amplify使用的安全组或子网IP段添加到RDS安全组的入站规则,类型选对应数据库的端口(比如MySQL的3306)。
- 若Amplify是无VPC部署:需要将对应AWS区域的Amplify服务IP段添加到RDS安全组的入站规则(可通过AWS官方文档查询区域IP,也可临时开放
数据库连接数耗尽
该错误也可能是数据库可用连接数被占满:
- 登录RDS控制台,查看监控面板的
Database Connections指标,确认是否达到实例的最大连接数上限。 - 若连接数已满,可通过修改RDS参数组的
max_connections值调高上限,同时优化应用的数据库连接池配置(比如设置连接超时回收、减少闲置连接)。
IAM认证权限配置问题(若使用IAM方式连接数据库)
如果你的应用通过IAM角色认证连接RDS,需检查Amplify的执行角色权限:
- 给Amplify服务角色添加如下IAM策略,替换占位符为你的实际信息:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "rds-db:connect", "Resource": "arn:aws:rds-db:<区域ID>:<账户ID>:dbuser:<RDS资源ID>/<数据库用户名>" } ] } - 同时在RDS数据库中创建关联该IAM角色的用户:
CREATE USER 'iam_auth_user' IDENTIFIED WITH AWSAuthenticationPlugin AS 'RDS'; GRANT ALL PRIVILEGES ON your_db.* TO 'iam_auth_user'; FLUSH PRIVILEGES;
VPC网络连通性问题(Amplify部署在VPC内时)
若Amplify配置了VPC访问,需确认:
- Amplify的子网与RDS实例的子网属于同一VPC,或已配置VPC peering。
- RDS安全组允许Amplify子网的IP访问。
- 检查路由表是否存在指向RDS子网的有效路由。
内容的提问来源于stack exchange,提问作者Gh05d
相关产品推荐
相关产品推荐

