Отключить автоконфигурацию Spring Cloud AWS для локальной разработки - PullRequest
0 голосов
/ 08 июня 2018

Я использую следующую зависимость Maven, которая автоматически конфигурирует все необходимые параметры, чтобы мой проект работал на AWS:

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

Есть ли чистый, работающийрешение как для тестирования, так и для локальной разработки?

1 Ответ

0 голосов
/ 08 июня 2018

Я решил это для тестов с помощью плагина 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>

Локальная разработка была решена путем установки следующих переменных в качестве параметров виртуальной машины или в сервере Spring Cloud Config:

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

Вы можете использовать любое значение для cloud.aws.region.static, но оно должно быть одним.

Я прочитал оба решения в разных местах и ​​подумал, что это может помочь кому-то в будущем увидеть их объединенными здесь.

...