由连接到外部RDS的Elastic Beanstalk创build的EC2权限

我对Elastic Beanstalk很陌生,对服务器pipe理不太熟练,但是我需要在Elastic Beanstalk上build立一个连接到外部RDS MySQL数据库的Django项目。

我已经创build了一个单独的RDS MySQL数据库,我可以在我的电脑上使用Sequel Pro连接到它,没有任何问题。 然后我有我的Django项目,我试图把Elastic Beanstalk,但不幸的是没有运气。 如果我从我的电脑运行本地Django服务器,该项目是可浏览的,Amazon RDS MySQL是可访问的。 但是,当我跑步

eb deploy 

我明白了

 django.db.utils.OperationalError: (2003, "Can't connect to MySQL server on 'myapp-staging.xxx.eu-west-1.rds.amazonaws.com' (110)") (ElasticBeanstalk::ExternalInvocationError) 

如果我通过SSHlogin到EC2服务器

 eb ssh 

然后检查打开的端口

 netstat -lntu 

我没有看到MySQL的端口3306,所以我想它被防火墙阻止。

这是我尝试的权限

  1. 我访问了RDS仪表板 – >安全组,并使用EC2安全组连接types创build了myapp-mysql-security-group,指向Elastic Beanstalk EC2实例“awseb-e -…”使用的EC2安全组。
  2. 我去了EC2 – >安全组和“awseb-e -…”我设置入站MySQL端口源0.0.0.0/0
  3. 我去了VPC仪表板 – >安全组,并创build了myapp-mysql-security-group,使用源端口0.0.0.0/0的MySQL端口的入站规则。

然后我试图重新部署,重新启动服务器,甚至重build环境,但没有任何帮助。 MySQL端口3306在由Elastic Beanstalk创build的EC2实例中仍未打开。

我做错了什么或缺less什么?

configuration中似乎有两个缺失点:

  1. 我必须将Elastic Beanstalk环境重新创build为与RDS数据库相同的虚拟私有云(VPC)。 这可以通过以下方式完成:

     eb create myapp-staging --vpc 

然后回答一些问题,如什么是VPC ID。

  1. 我必须为“rds-launch-wizard”安全组inputVPC CIDR(IP)到允许的MySQL传入连接:

    a)转到VPC仪表板 – >您的VPC并复制VPC CIDR。

    b)转到VPC仪表板 – >安全组,然后select“rds-launch-wizard”组,然后编辑入站规则并添加以下规则:

     MySQL/Aurora (3306) | TCP (6) | 3306 | <VPC CIDR here>