2014-07-08 274 views
6

我一直在尝试使用运行MySQL的EC2实例和RDS数据库设置AWS Free Tier帐户。不幸的是,我无法弄清楚如何授予EC2实例对数据库的访问权限。我已经阅读了所有的AWS文档,但不幸的是过时了,因为在StackOverflow上发布的所有问题都是如此。所有文档都声明我应该去RDS控制面板的安全组部分。但是,当我这样做时,这就是我面临的问题。亚马逊网络服务EC2与VPC的RDS连接

enter image description here

**我会包括图像,但我没有为它的声誉。

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

“支持的平台上的AWS文档”和“在VPC中使用RDS”的链接无用。他们已经过时了,并且不断向我介绍RDS控制面板下的安全组,然后我只向我显示此消息。

回答

15

拇指规则:当您在VPC中设置资源时,请仅使用仅限VPC安全组。个人RDS,Redshift等等。安全小组仅在ec2-classic的情况下工作。意思是,当你没有在VPC中设置东西时。

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

我不能详细说明,因为我不知道你的VPC配置以及你设置的子网(公共/私有)。

UPDATE:

这里是假设的情况

VPC: 10.0.0.0/16 
1 public subnet: 10.0.0.0/24 
1 Private Subnet: 10.0.1.0/24 
  • 假设你把你的EC2实例在公共子网
  • 假设你把你的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 

对于RDS安全组:

Inbound: port 3306: from 10.0.0.0/24 

说明:

Inbound: port 80, 443 : from 0.0.0.0/0 

这将使得EC2实例是在80和443端口从Internet访问。


Outbound: port 3306 : to 10.0.1.0/24 

这使得EC2实例发送流量的端口3306只专用子网是10.0.1.0/24


Inbound: port 3306: from 10.0.0.0/24 

这使得RDS实例接受来自公共子网10.0.0.0/24的端口3306上的流量。您的EC2实例驻留在公共子网,以便固有RDS将接受流量EC2实例在端口3306


注:上面的设置假定您已经设置相应的路由表中的公共/私人子网。

希望这会有所帮助。

+0

好的,谢谢你的反馈。我想到了这一点。但我仍然不明白如何设置安全组,以便我的ec2实例可以与RDS数据库进行通信。我想建立一个非常简单的配置。 EC2实例只能在端口80和443上公开访问.RDS实例不应公开访问。它应该只能从ec2实例的端口3306访问。所以,我的问题是如何在安全组中设置入站规则? – Alonzo

+1

@Alonzo查看最新的答案。 – slayedbylucifer

+0

非常感谢!我需要两个安全组,然后我必须允许从一个安全组访问另一个安全组。那是我无法将头包裹起来的原因。我认为我必须在一个安全团队中设置这一切。 – Alonzo