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

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

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

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

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

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

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

【问题讨论】:

    标签: laravel amazon-web-services amazon-elastic-beanstalk amazon-rds


    【解决方案1】:

    查看以下清单:

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

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

    【讨论】:

    • 嗨,我已经更新了这个问题。请看一看。还是不行。
    • 您能否将问题归零?是连接到数据库还是找到要连接的正确数据库?您是否使用了正确的数据库名称?
    • 如您在屏幕截图中看到的,数据库名称是 DB Identifier。我想我用对了。
    • 我已经更新了答案,您介意检查一下是否可以解决问题吗?
    • 谢谢。这样可行。数据库名称的问题。我认为数据库标识符是数据库名称。令人困惑。
    猜你喜欢
    • 2015-01-29
    • 2019-12-02
    • 1970-01-01
    • 2018-03-23
    • 2014-02-15
    • 2017-05-22
    • 2021-05-03
    • 1970-01-01
    • 2017-02-02
    相关资源
    最近更新 更多