我有一个ElasticBeanstalk应用程序,它使用Docker运行一个小型的Laravel PHP API。
在ElasticBeanstalk中运行时,应用程序无法连接到MySQL。
MySQL DB是一个公开可用的AWS RDS实例。
我在本地运行我的Docker容器,应用程序可以正常连接。
当我部署到ElasticBeanstalk时,应用程序无法连接...
有人能指点我帮忙调试吗?
解
对于其他任何偶然发现此事的人:
解决方案是为EC2实例和RDS数据库创建新的安全组。这两个安全组通过端口3306为实例和数据库打开了访问权限。
我还确保EC2实例在每个子网和与我的数据库相同的VPC中可用。
取自下面的答案以及我的SysOps朋友的帮助。
答案 0 :(得分:1)
您的ec2实例很可能没有分配公共IP。如果您尝试在ec2实例上没有公共IP的情况下连接到RDS的公共IP,您将无法连接。
ec2实例要么需要公共IP,要么需要通过NAT进行外部互联网连接。
答案 1 :(得分:1)
您可能需要检查附加到Elastic Beanstalk的EC2安全组规则,以允许端口3306上的TCP用于MYSQL类型。