Amazon Web Services EC2到RDS与VPC的连接

Alo*_*nzo 6 amazon-ec2 amazon-rds amazon-vpc

我一直在尝试使用EC2实例和运行MySQL的RDS数据库来设置AWS Free Tier帐户.不幸的是,我无法弄清楚如何从EC2实例授予对数据库的访问权限.我已经阅读了所有AWS文档,但遗憾的是,StackOverflow上发布的所有问题都已过时.所有文档都说明我应该转到RDS仪表板的安全组部分.但是,当我这样做时,这就是我所面对的.

在此输入图像描述

**我会包含图像,但我没有它的声誉.

好的,我知道我没有使用EC2-Classic平台,我必须对EC2仪表板中的安全组进行这些更改,但是如何?!我不希望公共访问端口3306,我只希望EC2实例能够与私有子网上的RDS数据库通信.任何帮助将不胜感激.

"支持的平台上的AWS文档"和"在VPC中使用RDS"的链接没有帮助.它们已经过时,并且还会继续将我引回到RDS仪表板下的安全组,然后只显示此消息.

sla*_*fer 16

经验法则:在VPC中设置资源时,使用VPC安全组.个人RDS,Redshift ......等.安全组只在ec2-classic的情况下工作.意思是,当你没有在VPC中设置东西时.

转到VPC控制台,然后在左侧菜单中,您将找到安全组.这些安全组应控制对VPC内部署的AWS资源的访问.

我不能详细说明,因为我不知道您的VPC配置以及您正在设置这些子网(公共/私有).

这是假设情景......

VPC: 10.0.0.0/16
1 public subnet: 10.0.0.0/24
1 Private Subnet: 10.0.1.0/24
Run Code Online (Sandbox Code Playgroud)
  • 假设您将EC2实例放在Public Subnet中
  • 假设您将RDS实例放在私有子网中
  • 并且您希望EC2实例可以从世界上的80,443访问,并且RDS实例只能通过EC2实例访问.

因此,这些是安全组设置:

对于EC2实例安全组:

Inbound: port 80, 443 : from 0.0.0.0/0
Outbound: port 3306 : to 10.0.1.0/24
Run Code Online (Sandbox Code Playgroud)

对于RDS安全组:

Inbound: port 3306: from 10.0.0.0/24
Run Code Online (Sandbox Code Playgroud)

说明

Inbound: port 80, 443 : from 0.0.0.0/0
Run Code Online (Sandbox Code Playgroud)

这将允许从Internet上的端口80和443访问EC2实例.


Outbound: port 3306 : to 10.0.1.0/24
Run Code Online (Sandbox Code Playgroud)

这允许EC2实例仅将端口3306上的流量发送到私有子网10.0.1.0/24


Inbound: port 3306: from 10.0.0.0/24
Run Code Online (Sandbox Code Playgroud)

这允许RDS实例从公共子网10.0.0.0/24接受端口3306上的流量.您的EC2实例位于公有子网中,因此RDS将接受来自端口3306上的Ec2实例的流量

注意:以上设置假定您已相应地为公共/私有子网设置路由表.

希望这可以帮助.