5

我有一个使用 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

...我得到以下异常...

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]
      ...

当我使用对特定 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

...一切都很好。

如何修改我的环境以显示 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
4

0 回答 0