Отключить автоконфигурацию Spring Cloud AWS для локальной разработки
Я использую следующую зависимость 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]
...
Есть ли чистое, работающее решение для тестирования и локальной разработки?
2 ответа
Я решил это для тестов, используя плагин 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
, но должен быть один.
Я прочитал оба решения в разных местах и подумал, что это может помочь кому-то в будущем увидеть их здесь вместе.
Эта ошибка возникает, когда вы запускаете приложение локально с включенной автоматической настройкой облака aws.
Мне помогли следующие настройки:
spring:
autoconfigure:
exclude:
- org.springframework.cloud.aws.autoconfigure.context.ContextInstanceDataAutoConfiguration
- org.springframework.cloud.aws.autoconfigure.context.ContextStackAutoConfiguration
- org.springframework.cloud.aws.autoconfigure.context.ContextRegionProviderAutoConfiguration
cloud:
aws:
region:
static: ap-south-1
stack:
auto: false
Вы можете узнать больше об этом здесь: Док