AWS ElasticBeanstalk 上的 Laravel 应用程序未连接到 RDS 数据库

Posted

技术标签:

【中文标题】AWS ElasticBeanstalk 上的 Laravel 应用程序未连接到 RDS 数据库【英文标题】:Laravel application on the AWS ElasticBeanstalk is not connecting to the RDS database 【发布时间】:2020-11-03 02:56:26 【问题描述】:

我已将我的 Laravel 应用程序部署到 AWS ElasticBeanstalk。我正在尝试从应用程序连接到 RDS 数据库。数据库凭据在 BeanstalkEnvironment 中设置为环境变量。但它不起作用。这是我到目前为止所做的。

我在与 Elasbeanstalk 的 EC2 实例相同的 VPC 中创建了一个 RDS 数据库。

然后我设置环境变量如下:

当我运行我的应用程序时,它会抛出错误“Unknown database 'laratest'”。我的配置有什么问题?

以下是RDS数据库安全组的入站规则:

如您所见,它允许来自 EC2 实例的 SG 的端口 3306 上的 TCP 连接。也允许所有流量。

【问题讨论】:

【参考方案1】:

查看以下清单:

    检查数据库名称:它与标识符不同。在“配置”选项卡下,查找“数据库名称”。尝试连接时将其用作数据库的名称。 RDS 实例的安全组允许来自 Elastic ElasticBeanstalk 应用程序安全组的 TCP 连接在端口 3306 上。阅读更多here。 虽然您提到两个服务是在同一个 VPC 中配置的,但如果您设置了 VPC,如果您不共享子网,请确保两个子网之间有开放的连接线。在大多数情况下,这是默认存在的(例如,如果您使用 CDK 来设置它们),但这将是我的下一个复选框。

另外,请注意,锁定 RDS 实例的更好方法是使用基于 IAM 的身份验证。因此,您不必担心在任何地方暴露凭证,AWS 会负责身份验证。阅读更多关于它的信息here。

【讨论】:

嗨,我已经更新了这个问题。请看一看。还是不行。 您能否将问题归零?是连接到数据库还是找到要连接的正确数据库?您是否使用了正确的数据库名称? 如您在屏幕截图中看到的,数据库名称是 DB Identifier。我想我用对了。 我已经更新了答案,您介意检查一下是否可以解决问题吗? 谢谢。这样可行。数据库名称的问题。我认为数据库标识符是数据库名称。令人困惑。

以上是关于AWS ElasticBeanstalk 上的 Laravel 应用程序未连接到 RDS 数据库的主要内容,如果未能解决你的问题,请参考以下文章

AWS ElasticBeanstalk 上的 502 错误网关 Nginx 节点

带有 ALB 和 Socket.IO 的 AWS ElasticBeanstalk 上的 HTTP 400 错误

AWS ElasticBeanstalk 上的 Laravel 应用程序未连接到 RDS 数据库

AWS ElasticBeanStalk 上的解析服务器不会将 .mp4 PFFile 流式传输到 AVPlayer?

jac(jinja-assets-compressor)在 AWS elasticbeanstalk 上的烧瓶应用程序中不起作用

替换 AWS Elastic BeanStalk 上的特定实例?