因此,我在亚太地区(孟买)创建了一个RDS实例,并在同一区域单独创建了一个EC2实例。我的本地机器可以很好地访问DB服务器,但是不能从我的EC2实例中访问它。我使用了我的ec2的公共IPv4地址:

并将此实例ip放入我的rds实例的安全组入站规则中:

不幸的是,这并不起作用。对我来说幸运的是,公开所有的ips对我来说是有效的:

即使它可以工作,公开所有的it也不是我想要的。我是不是遗漏了什么?如何才能使我的RDS只能从EC2实例访问?
发布于 2019-07-15 03:50:33
已将EC2实例的公网IP添加到RDS安全组中。由于EC2实例和RDS实例位于同一个私有网络中,因此两者之间的通信将完全在私有网络内进行。这意味着您需要将EC2实例的私有IP加入白名单,而不是公网IP。只有当EC2实例向私有网络外发送请求时,才会使用公网IP。
实际上,我建议将EC2实例所属的安全组ID列入白名单,而不是EC2实例的具体IP地址。如果EC2实例的IP发生更改,或者您将应用程序扩展到多个EC2实例,这将允许安全组继续工作。
发布于 2019-07-15 10:54:53
只需在@标记答案中添加,如果您的ec2实例和RDS在同一个私有网络中,那么内网IP应该可以工作,但是如果您在不同的私有网络中,那么您必须添加公网IP地址,但在您的情况下公有IP地址不起作用,所以这意味着两者都在同一个私有网络中。
一种方式是根据@Mark提到的3306,允许EC2实例的安全组ID。
但是另一种方式可以是,
例如,如果您的私有网络CIDR块为10.0.0.0/16,则:
我建议对DB安全组中的3306端口允许10.0.0.0/16,这将允许所有EC2实例,这将有助于测试和调试。
发布于 2019-07-17 05:02:35
确保在数据库设置中将“公共可访问性”设置为“是”。
https://stackoverflow.com/questions/57029826
复制相似问题