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)
现在有一个关于如何将ElasticBeanstalk与任何RDS数据库(MySQL等)连接的教程,其方式不会将两者绑定在一起,即您可以单独创建它们.本教程将介绍如何通过AWS控制台设置安全组.
在这之后,你必须设置(至少为MySQL)5个ElasticBeanstalk环境变量:RDS_HOSTNAME,RDS_PORT,RDS_DB_NAME,RDS_USERNAME和RDS_PASSWORD.
不同的ElasticBeanstalk实例将以不同的方式访问这些变量以建立数据库连接(我知道在PHP中,您必须使用$_SERVER['RDS_DB_NAME']等).请参阅上面的链接,了解如何在Java,Node.js,Python,Ruby和.NET中执行此操作.
您是否也将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上的流量?(他们默认情况下这样做)
| 归档时间: |
|
| 查看次数: |
10205 次 |
| 最近记录: |