尝试使用 RDS 运行 Ec2 时,连接超时。我的安全组规则看起来正确吗?

When trying to run Ec2 with RDS, connection times out. Do my security group rules look right?

我已经使用来自 S3 的文件和 MySQL RDS 设置了一个 Ec2。如果我在本地 运行 我的 Node 应用程序,我可以连接到 RDS,它工作得很好。但是当我通过 SSH 进入 Ec2 和 npm start 时,它永远不会连接并且连接超时。唯一的错误是错误连接超时。

下面是RDS安全组入站规则的截图。请注意,我的桌面只有一个 IP(这就是我能够通过 运行 在本地连接应用程序的方式)。

这是我第一次设置 Ec2 和 RDS。有什么不对劲吗?我知道我不需要所有这些规则,但我错过了什么?我该如何排除故障?还附上了 EC2 出站 SG 规则的屏幕截图。

此外,我在 Ec2 上配置了一个 MySQL 服务器,可以通过 SSH 连接到 Ec2 并连接到 RDS 数据库。有没有另一种简单的方法可以测试 Ec2 是否连接到 RDS?

如果第一个 TCP 规则引用了附加到您的 EC2 实例的安全组,而您正试图从该实例访问此 RDS 实例,则此 SG 和所有其他规则(除了来自您的连接的连接)将自动允许流量笔记本)是多余的。

请注意,您需要允许连接到 EC2 实例的 SG 上的出站通信才能到达 RDS。最简单,也可能是最好的方法是以与在 RDS SG 中相同的方式引用 RDS 的 SG。

TCP 3306 -> destination: SG-<sg-attached-to-your-rds>

如果问题仍然存在,那么您应该检查您的 NACL 配置(如果您的实例与您的 RDS 实例不在同一子网中)并允许这些子网之间针对这种特定类型的流量进行通信。

我相信最初的问题实际上并不是 EC2 到 RDS 的连接,尽管上面的建议是必不可少的。该应用程序的主页不需要数据库中的任何数据,但它根本没有加载,所以我最终发现这是我的计算机和使用 public IP 地址的 EC2 之间的连接问题。这应该是早先要检查的东西 - 线索是主页难题和 SSH 上的成功 MySQL 连接。

我只需要在 EC2 的安全组上为端口 3000 添加入站规则。它已设置为所有流量。知道为什么所有流量都不起作用吗?