无法使用terraform创建的基础架构从EC2连接到RDS

时间:2017-10-04 14:12:51

标签: amazon-ec2 amazon-rds terraform amazon-vpc

我按照链接中提供的步骤手动创建了基础架构: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实例进行连接。那没用。

我错过了什么吗?非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

问题排查步骤:

  1. 检查公共ec2实例上的安全组的出口(出站规则),
  2. 确保它允许端口5432的出站规则访问rds(在私有子网中)

    1. 检查rds实例上的安全组的入口(入站规则)。也许确定它允许来自公共ec2实例CIDR ips或安全组的端口5432
    2. 如果没有,请更新您的terraform代码。

答案 1 :(得分:0)

ec2实例位于公有子网中。这意味着理想情况下,流量将来自NAT网关。因此,我建议编辑RDS的安全组规则,添加规则以允许在端口5432上访问NAT网关的公共IP。