5

Spring Cloud AWS を使用した Spring Boot アプリケーションがあります。Amazon RDS データベースを使用して Elastic Beanstalk にアプリケーションをデプロイしています。

ドキュメントによると、Elastic Beanstalk は、アプリケーションをデプロイするときに作成する AWS リソースに固定のリソース名を提供します。

つまり、実際のインスタンス ID ( など) で RDS データベースを参照するのではなくaxxt7bi97gbjy4、Elastic Beanstalk リソース名 を使用できるはず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