无法从 Elasticbeanstalk 连接到 RDS - 连接超时

无法从 Elasticbeanstalk 连接到 RDS - 连接超时

我在 AWS 上使用 Elastic Beanstalk/EC2 为我的 PHP API 设置了 RDS(mysql)。

该 API 可以通过 http 和 https 访问,但似乎与数据库的连接遇到了问题,因为我收到了错误:

“SQLSTATE[HY000] [2002] 连接超时”,“error_data”:

我检查过的内容:

  • 我的 PHP 应用程序已实现负载平衡,并附加了 SSL 证书,并通过 cloudfront 通过 https 提供服务。分配给此 EC2 实例的安全组与我用于 RDS 的安全组相同,具有接受 http 连接的入站规则(它还附加到允许其处于authorized状态的默认 RDS 安全组)

在此处输入图片描述

  • 鉴于其安全组,处于授权状态的 RDS 实例:在此处输入图片描述

  • 我可以通过 sequel pro 中的凭证连接到数据库实例

  • 我仔细检查了我的 elastic beanstalkenv变量,它们与我在服务器上成功登录 sequel pro 时使用的变量相同

我检查了服务器日志,并没有得到关于无法连接的更多详细信息。


编辑:添加了 MYSQL 的入站设置

在此处输入图片描述

答案1

我的建议如下:

1-记下您创建的 RDS 实例的端点用户名、密码和主机名。

2-将安全组和 VPC 分配给您将分配给 Elastic Beanstalk 应用程序中的环境的 RDS。

3- 在您的 EB 环境中,如果环境已部署,请转到配置选项卡。如果尚未部署,您可以在创建环境时转到页面底部的配置选项。然后转到软件选项。层次结构如下。环境 -> 配置 -> 软件在页面下方,您将有一个选项,用于以键值对的形式添加环境变量,您必须在那里添加以下标签:

DB_HOST = 您的 RDS 端点

DB_NAME = 您在创建数据库时指定的数据库名称

DB_PASS = 您在创建数据库时提供的密码

DB_PORT = 您指定的端口,在大多数情况下,mysql 的端口为 3306。

DB_USER = 您在创建数据库时提供的用户名

保存配置并运行环境,希望这能解决问题。

相关内容