EC2无法连接到VPC上的RDS。 子网问题?

我能够使用Visual Studio的AWS工具包部署我们的.NET应用程序。 我手动设置了RDS数据库(MySQL),并使用弹性beanstalk(在VPC上设置)部署应用程序。 问题是,当我在EC2实例上运行的应用程序上testingregistry单时,它不会将用户数据存储到RDS上的MySQL数据库中。 但是,如果我在本地运行应用程序,它会将其存储在RDS中的数据库中。 所以这让我相信这是EC2没有正确访问RDS的问题。

问题是我对EC经典非常熟悉,但现在我的地区不允许它,我必须使用VPC。

现在,我甚至无法连接到RDS数据库…我尝试设置一个不同的VPC在一起,但没有运气。 我有一个感觉,它与子网/安全组。 我已经允许所有IP的(0.0.0.0/0)访问SSH,HTTP,HTTPS,MYSQL(3600)..入站。 出站具有所有端口的全部IP地址。

由于RDS需要在VPC中部署两个可用区域,因此您需要确保Beanstalk能够通过networkingACL访问它们以及基于实例的安全组的权限。

只有你的ELB和你的NAT实例/ NAT网关需要是公有子网,其他的一切都应该在私有子网中。

安全组是有状态的,并且networking组是无状态的,所以虽然您只需要允许安全组的入站规则,但您需要允许来自您的Beanstalk子网的入站和出站端口同时使用networkingACL访问两个RDS子网。 请参阅您的VPC中的安全性 。

这里是创buildbeanstalk环境的示例eb create (replace方括号string):

eb create [BEANSTALK_ENVIRONMENT] --instance_type m3.medium --branch_default --cname [BEANSTALK_CNAME] --database --database.engine postgres --database.version [x] --database.size 100 --database.instance db.m4.large --database.password xxxxxxxxx --database.username ebroot --instance_profile [BEANSTALK_EC2_IAM_PROFILE] --keyname [SSH_KEY_NAME] --platform "64bit Amazon Linux 2015.03 v1.3.0 running Ruby 2.2" --region us-east-1 --tags tag1=value1,tag2=value2 --tier webserver --verbose --sample --vpc.id [vpc-xxxxxx] --vpc.dbsubnets [subnet-db000001,subnet-db000002] --vpc.ec2subnets [subnet-ec200001] --vpc.elbsubnets [subnet-elb00001] --vpc.elbpublic --vpc.securitygroups [sg-00000001] --sample --timeout 3600

子网-db000001networkingACL规则:

 Inbound: Port Range: 5432, Source [subnet-ec200001 (as ip range)], Allow Outbound: Port Range: 5432, Source [subnet-ec200001 (as ip range)], Allow 

子网-db000002networkingACL规则:

 Inbound: Port Range: 5432, Source [subnet-ec200001 (as ip range)], Allow Outbound: Port Range: 5432, Source [subnet-ec200001 (as ip range)], Allow 

子网-EC200001networkingACL规则:

 Inbound: Port Range: 5432, Source [subnet-db000001 (as ip range)], Allow Inbound: Port Range: 5432, Source [subnet-db000002 (as ip range)], Allow Outbound: Port Range: 5432, Source [subnet-db000001 (as ip range)], Allow Outbound: Port Range: 5432, Source [subnet-db000002 (as ip range)], Allow 

子网-elb00001networkingACL规则:

 Inbound: Port Range: 80, Source 0.0.0.0/0, Allow Inbound: Port Range: 443, Source 0.0.0.0/0, Allow Outbound: Port Range: 80, Source 0.0.0.0/0, Allow Outbound: Port Range: 443, Source 0.0.0.0/0, Allow 

关于networkingACL的附加说明 – 许多服务不对原始端口做出响应,而是使用临时端口 。 因此,您可能必须将以下内容添加到具有EC2实例的子网的入站和出站networkingACL:

 Outbound: Port Range: 1024-65535, Source 0.0.0.0/0, Allow Outbound: Port Range: 1024-65535, Source 0.0.0.0/0, Allow 

推荐您的VPCnetworkingACL规则中还有几个有用的scheme。

我希望这有帮助。