我按照链接中提供的步骤手动创建了基础架构:connecting-to-a-database-within-an-amazon-vpc。
我可以完全从公共子网中的ec2连接私有子网中的RDS。这正是我想要的。
但是当我尝试使用terraform创建相同的副本时,它只是没有连接。
命令:
nslookup <my-hostname>
给了我私人IP。
命令:
telnet x.x.x.x 5432
导致“telnet:无法连接到远程主机:连接超时”
命令:
netstat -an | grep x.x.x.x
显示“SYN_SENT”。
我尝试通过添加0.0.0.0/0来允许RDS安全组中的所有IP。那没用。
我尝试手动创建RDS实例,但是将其添加到terraform创建的VPC并尝试使用terraform创建的ec2实例进行连接。那没用。
我错过了什么吗?非常感谢任何帮助。
答案 0 :(得分:0)
问题排查步骤:
确保它允许端口5432
的出站规则访问rds(在私有子网中)
5432
。 如果没有,请更新您的terraform代码。
答案 1 :(得分:0)
ec2实例位于公有子网中。这意味着理想情况下,流量将来自NAT网关。因此,我建议编辑RDS的安全组规则,添加规则以允许在端口5432上访问NAT网关的公共IP。