Elastic Beanstalk应用程序不会连接到RDS MySQL实例

Tim*_*ahn 15 amazon-ec2 amazon-rds amazon-elastic-beanstalk

我在Elastic Beanstalk实例上设置了CodeIgniter PHP应用程序.我正在尝试将其连接到我设置的RDS MySQL实例,但加载Elastic Beanstalk站点URL总是导致页面超时连接.我已经将问题缩小到无法连接到数据库.

我认为我已正确设置我的安全组以允许Elastic Beanstalk EC2实例与RDS通信,但由于页面仍未加载,因此必须出错.

我在下面列出了RDS和Elastic Beanstalk使用的安全组的入站/出站规则的屏幕截图,以及我附加到Elastic Beanstalk实例的安全组的屏幕截图.

入境规则

出境规则

在此输入图像描述

关于为什么我的Elastic Beanstalk应用程序无法与我的RDS实例通信的任何想法?


编辑:RDS实例和Elastic Beanstalk实例位于同一安全组中.

Gus*_*taf 11

将已设置Elastic Beanstalk的堆栈安全组名称添加到RDS安全组列表中.

最简单的方法是通过登录EC2实例(即eb ssh)进行测试,并测试与数据库的连接以排除应用程序的任何问题.

mysql -u user -p password -h rds.instance.endpoint.region.rds.amazonaws.com
Run Code Online (Sandbox Code Playgroud)


Abh*_*kar 9

现在有一个关于如何将ElasticBeanstalk与任何RDS数据库(MySQL等)连接的教程,其方式不会将两者绑定在一起,即您可以单独创建它们.本教程将介绍如何通过AWS控制台设置安全组.

在这之后,你必须设置(至少为MySQL)5个ElasticBeanstalk环境变量:RDS_HOSTNAME,RDS_PORT,RDS_DB_NAME,RDS_USERNAMERDS_PASSWORD.

不同的ElasticBeanstalk实例将以不同的方式访问这些变量以建立数据库连接(我知道在PHP中,您必须使用$_SERVER['RDS_DB_NAME']等).请参阅上面的链接,了解如何在Java,Node.js,Python,Ruby和.NET中执行此操作.


Mic*_*eim 8

您是否也将RDS实例启动到VPC中?

您的RDS安全组需要将端口3306上的传入流量授予Beanstalk安全组.

例如RDS安全组

Incoming
ALLOW TCP 3306 from BeanstalkSG
Run Code Online (Sandbox Code Playgroud)

不要打开到0.0.0.0

由于您已经允许所有流量传出,因此您的Beanstalk SG不必另外为传出流量授予3306.

您的VPC ACL是否允许3306上的流量?(他们默认情况下这样做)