JPA 无法从 Beanstalk 连接到 AWS RDS,但它可以在本地工作

Posted

技术标签:

【中文标题】JPA 无法从 Beanstalk 连接到 AWS RDS,但它可以在本地工作【英文标题】:JPA cannot connect to AWS RDS from Beanstalk but it works locally 【发布时间】:2021-08-01 08:48:15 【问题描述】:

我正在将 Java 8 Spring Boot Web 应用程序部署到 AWS Elastic Beanstalk。我有一个关联的 RDS mysql 实例并配置了相关的连接详细信息。

在我的机器上本地运行应用程序时连接有效,因为我为 RDS 服务器设置了以下路由配置:

如上所述,还会为与我的 EC2 实例关联的安全组添加路由。

因此,在 EC2 机器上运行mysql工作,可以访问数据库。

将应用程序部署到 Beanstalk 时会出现此问题,并在其中将其实施到 EC2 实例中。应用程序崩溃,因为它在尝试连接到 MySQL RDS 实例时遇到连接被拒绝错误:

这似乎没有任何意义。 该数据库可从 EC2 实例(通过 mysql 命令验证)和 AWS 外部访问,因此唯一剩下的原因是错误配置了 Spring Boot 应用程序属性。

这似乎也不是问题,因为在本地运行它时,在我的机器上,该应用没有问题连接到 RDS 实例并使用生产 MySQL 服务器正常运行。

我有单独的 application-development.propertiesapplication-production.properties 文件,但我将相关属性设置为相同的值:

spring.datasource.url                           = jdbc:mysql://XXXXXX.rds.amazonaws.com:3306/ebdb?useSSL=false&allowPublicKeyRetrieval=true&useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
spring.datasource.username                      = XXXXXX
spring.datasource.password                      = XXXXXX

spring.datasource.driver-class-name             = com.mysql.cj.jdbc.Driver

关于为什么我的应用可以在本地运行但部署到 Beanstalk 时不能运行的任何指示?

【问题讨论】:

【参考方案1】:

重新创建 Beanstalk 环境和 RDS 实例似乎可以解决问题。

【讨论】:

以上是关于JPA 无法从 Beanstalk 连接到 AWS RDS,但它可以在本地工作的主要内容,如果未能解决你的问题,请参考以下文章

当我将 Spring Boot 应用程序部署到 AWS Elastic Beanstalk 并且无法从本地 Spring Boot 连接到 RDS 时出现 502 错误网关

无法从 Elastic Beanstalk 连接到 Amazon SimpleDB

AWS Elastic Beanstalk Worker 无法连接到 SQS

从 AWS Beanstalk 应用程序连接到 AWS EC2

在 AWS Beanstalk 上部署 SpringBoot - 应用程序启动,连接到 RDS-DB,但浏览器无法连接

从 Elastic Beanstalk 连接到托管在 AWS ec2 上的 MongoDB