web-dev-qa-db-ja.com

ローカル開発のSpring Cloud AWS自動構成を無効にする

AWSでプロジェクトを機能させるために必要なすべてのパラメーターを自動構成する次のMaven依存関係を使用します。

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-aws</artifactId>
    <version>1.2.2.RELEASE</version>
</dependency>

AWSに依存する重要な機能はありませんが、実行時にS3からいくつかのファイルをロードするだけです。したがって、ローカルでの開発(およびテスト)時には、AWSの自動構成は必要ありません。

ローカルで実行するときに発生する論理エラーは次のとおりです。

...
Caused by: Java.lang.IllegalStateException: There is no EC2 meta data available, because the application is not running in the EC2 environment. Region detection is only possible if the application is running on a EC2 instance
    at org.springframework.util.Assert.state(Assert.Java:392) ~[spring-core-4.3.2.RELEASE.jar:4.3.2.RELEASE]
    at org.springframework.cloud.aws.core.region.Ec2MetadataRegionProvider.getRegion(Ec2MetadataRegionProvider.Java:39) ~[spring-cloud-aws-core-1.2.2.RELEASE.jar:1.2.2.RELEASE]
    at org.springframework.cloud.aws.core.config.AmazonWebserviceClientFactoryBean.createInstance(AmazonWebserviceClientFactoryBean.Java:98) ~[spring-cloud-aws-core-1.2.2.RELEASE.jar:1.2.2.RELEASE]
    at org.springframework.cloud.aws.core.config.AmazonWebserviceClientFactoryBean.createInstance(AmazonWebserviceClientFactoryBean.Java:44) ~[spring-cloud-aws-core-1.2.2.RELEASE.jar:1.2.2.RELEASE]
...

テストとローカル開発の両方のためのクリーンで実用的なソリューションはありますか?

13
delucasvb

Surefireプラグインを使用したテストでこれを解決しました:

<plugin>
    <groupId>org.Apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.21.0</version>
    <configuration>
        <classpathDependencyExcludes>
            <classpathDependencyExcludes>org.springframework.cloud:spring-cloud-aws-autoconfigure</classpathDependencyExcludes>
        </classpathDependencyExcludes>
    </configuration>
</plugin>

次の変数をVMパラメータとして、またはSpring Cloud Config Serverに設定して、ローカル開発を解決しました。

cloud.aws.region.auto=false
cloud.aws.region.static=us-east-1

cloud.aws.region.staticには任意の値を使用できますが、1つある必要があります。

私は両方の解決策を別の場所で読んでおり、それらがここで組み合わされるのを見ることが将来の誰かに役立つかもしれないと思いました。

12
delucasvb