我将使用Amazon RDS作为我的Spring启动Web应用程序
所以,我用' mainrds'创建了RDS。实例ID Screen Capture。然后我像这样配置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
当我运行应用程序时,我遇到了以下错误消息:
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
我无法弄清问题是什么。什么是遗漏点?
答案 0 :(得分:3)
我遇到了同样的问题。
spring-cloud-aws
可能无法解决其自身的aws region
问题。如果您只在一个区域上,请将其插入属性文件中,并附上放置RDS实例的区域。
cloud.aws.region.static=us-east-1
这解决了我的问题。
您也可以尝试:
cloud.aws.region.auto=true
查看EC2元数据服务是否可以解析正确的区域。
也可以通过连接。正常的spring-boot设置,你只需在数据源的url中指定RDS实例端点,如下所示:(对于postgresql实例)
spring.datasource.url=jdbc:postgresql://endpoint.of.rds.instance.amazonaws.com:5432/dbname
当然还会在您的application.properties中提供datasource.platform
,datasource.username
,datasource.password
,spring.database.driverClassName
和spring.jpa.database
。
答案 1 :(得分:3)
接受的答案对我不起作用。
经过一些调试后,我发现问题中给出的application.properties不正确:
#RDS
cloud.aws.rds.mainrds #this line has to be deleted
cloud.aws.rds.mainrds.username=dbadmin
cloud.aws.rds.mainrds.password=password
cloud.aws.rds.mainrds.readReplicaSupport=false
cloud.aws.rds.mainrds.databasename=maindata
删除cloud.aws.rds.mainrds
行后,一切正常。
不能选择使用spring.datasource.*
,因为我们正在对RDS使用IAM身份验证,因此必须每15分钟重新生成一次密码。