Gab*_*man 5 spring-boot amazon-elastic-beanstalk spring-cloud spring-cloud-aws
我有一个使用Spring Cloud AWS的Spring Boot应用程序。我正在使用Amazon RDS数据库在Elastic Beanstalk上部署应用程序。
根据文档,Elastic Beanstalk为部署应用程序时为您创建的AWS资源提供固定的资源名称。
这意味着axxt7bi97gbjy4,我应该能够使用Elastic Beanstalk资源名称而不是通过其实际实例ID(类似)来引用RDS数据库AWSEBRDSDatabase。我要这样做的原因是,无需手动干预即可配置Elastic Beanstalk环境,从而可以正确配置正确的数据库。
问题:
当我使用Elastic Beanstalk固定资源名称配置Spring Boot / Spring Cloud应用程序的数据源时AWSEBRDSDatabase...
cloud.aws.stack.auto=false
cloud.aws.region.auto=true
cloud.aws.credentials.instanceProfile=true
cloud.aws.rds.AWSEBRDSDatabase.username=user
cloud.aws.rds.AWSEBRDSDatabase.password=password
cloud.aws.rds.AWSEBRDSDatabase.databaseName=ebdb
Run Code Online (Sandbox Code Playgroud)
...我得到以下例外情况...
Caused by: java.lang.IllegalStateException: No database instance with id:'AWSEBRDSDatabase' found. Please specify a valid db instance
at org.springframework.cloud.aws.jdbc.rds.AmazonRdsDataSourceFactoryBean.getDbInstance(AmazonRdsDataSourceFactoryBean.java:170) ~[spring-cloud-aws-jdbc-1.0.4.RELEASE.jar!/:1.0.4.RELEASE]
at org.springframework.cloud.aws.jdbc.rds.AmazonRdsDataSourceFactoryBean.createDataSourceInstance(AmazonRdsDataSourceFactoryBean.java:151) ~[spring-cloud-aws-jdbc-1.0.4.RELEASE.jar!/:1.0.4.RELEASE]
at org.springframework.cloud.aws.jdbc.rds.AmazonRdsDataSourceFactoryBean.createInstance(AmazonRdsDataSourceFactoryBean.java:129) ~[spring-cloud-aws-jdbc-1.0.4.RELEASE.jar!/:1.0.4.RELEASE]
at org.springframework.cloud.aws.jdbc.rds.AmazonRdsDataSourceFactoryBean.createInstance(AmazonRdsDataSourceFactoryBean.java:45) ~[spring-cloud-aws-jdbc-1.0.4.RELEASE.jar!/:1.0.4.RELEASE]
at org.springframework.beans.factory.config.AbstractFactoryBean.afterPropertiesSet(AbstractFactoryBean.java:134) ~[spring-beans-4.3.4.RELEASE.jar!/:4.3.4.RELEASE]
...
Run Code Online (Sandbox Code Playgroud)
当我使用对特定RDS实例的引用来配置数据源时:
cloud.aws.stack.auto=false
cloud.aws.region.auto=true
cloud.aws.credentials.instanceProfile=true
cloud.aws.rds.axxt7bi97gbjy4.username=user
cloud.aws.rds.axxt7bi97gbjy4.password=password
cloud.aws.rds.axxt7bi97gbjy4.databaseName=ebdb
Run Code Online (Sandbox Code Playgroud)
...一切顺利。
如何修改环境以使Elastic Beanstalk固定资源名称AWSEBRDSDatabase出现?
更新资料
我在.ebextensions中添加了以下内容,并使用EB CLI创建了一个新环境。没有变化,同样的错误。AWSEBRDSDatabase资源不可用。
Resources:
AWSEBRDSDatabase:
Type: AWS::RDS::DBInstance
Properties:
AllocatedStorage: 5
DBInstanceClass: db.t2.small
DBName: test
Engine: postgres
EngineVersion: 9.3
MasterUsername: test
MasterUserPassword: testtesttest
Run Code Online (Sandbox Code Playgroud)