未找到 ID 为“ ”的数据库实例。请指定一个有效的数据库实例

mak*_*erj 5 java amazon-web-services spring-boot

我打算将 Amazon RDS 用于我的 Spring Boot Web 应用程序因此,我创建了带有 'mainrds' 实例 ID Screen Capture 的RDS 。然后我application.properties是这样配置的:

#RDS
cloud.aws.rds.mainrds
cloud.aws.rds.mainrds.username=dbadmin
cloud.aws.rds.mainrds.password=password
cloud.aws.rds.mainrds.readReplicaSupport=false
cloud.aws.rds.mainrds.databasename=maindata
Run Code Online (Sandbox Code Playgroud)

当我运行应用程序时,我遇到了以下错误消息:

Caused by: java.lang.IllegalStateException: No database instance with id:'mainrds' found. Please specify a valid db instance
    at org.springframework.cloud.aws.jdbc.rds.AmazonRdsDataSourceFactoryBean.getDbInstance(AmazonRdsDataSourceFactoryBean.java:170)
    at org.springframework.cloud.aws.jdbc.rds.AmazonRdsDataSourceFactoryBean.createDataSourceInstance(AmazonRdsDataSourceFactoryBean.java:151)
    at org.springframework.cloud.aws.jdbc.rds.AmazonRdsDataSourceFactoryBean.createInstance(AmazonRdsDataSourceFactoryBean.java:129)
    at org.springframework.cloud.aws.jdbc.rds.AmazonRdsDataSourceFactoryBean.createInstance(AmazonRdsDataSourceFactoryBean.java:45)
    at org.springframework.beans.factory.config.AbstractFactoryBean.afterPropertiesSet(AbstractFactoryBean.java:134)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1633)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1570)
    ... 178 common frames omitted
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚问题是什么。什么是缺失的点?

Mar*_*sen 6

我有同样的问题。

spring-cloud-aws可能无法自行解决正确aws region的问题。如果您仅位于一个区域,请将其与放置 RDS 实例的区域一起插入到您的属性文件中。

cloud.aws.region.static=us-east-1
Run Code Online (Sandbox Code Playgroud)

这为我解决了这个问题。

你也可以尝试:

cloud.aws.region.auto=true
Run Code Online (Sandbox Code Playgroud)

查看 EC2 元数据服务是否可以解析正确的区域。

也可以通过连接。正常的 spring-boot 设置,您只需在数据源的 url 中指定 RDS 实例端点,如下所示:(对于 postgresql 实例)

spring.datasource.url=jdbc:postgresql://endpoint.of.rds.instance.amazonaws.com:5432/dbname
Run Code Online (Sandbox Code Playgroud)

当然datasource.platform,还要在 application.properties 中提供datasource.username, datasource.password,spring.database.driverClassNamespring.jpa.database