Как запустить приложение с помощью spring-cloud-starter- aws локально? - PullRequest
1 голос
/ 01 апреля 2020

Мне нужно запустить приложение на основе Spring Boot локально. Он использует spring-cloud-starter- aws зависимость.
Проблема заключается в том, что он всегда пытается подключиться к службе метаданных EC2. Установка свойств «cloud. aws. *» Не помогает.
Я ожидаю, что будет использоваться цепочка учетных данных по умолчанию AWS, учетные данные и регион будут считываться одним из AWS предпочтительных способов (например, ~ / Файлы .aws / config и ~ / .aws / credentials).
Я пытался установить облако. aws .credentials.useDefaultAwsCredentialsChain свойство, но spring-cloud-starter- aws все равно

Я нашел примеров , которые используют стек CloudFormation по очень странной причине для локального запуска приложения.

Когда я использую AWS SDK для Java по умолчанию AWS цепочка используется без каких-либо проблем - мне не нужно ничего указывать c для локального запуска приложения (локально оно считывает учетные данные из файлов, а в EC2 использует службу метаданных экземпляра). Но с Spring Boot это не работает из коробки, и мне нужно как-то включить локальный запуск.

Я использую 2.2.2.RELEASE версию Spring Boot и 2.2.1.RELEASE версию Spring Cloud. У меня такое чувство, что они ввели регрессию, потому что в предыдущих версиях это работало без проблем.

Есть идеи, как запустить приложение локально?

1 Ответ

1 голос
/ 01 апреля 2020

Добавление следующих строк в конфигурацию помогает:

cloud.aws.region.static=my region
cloud.aws.stack.auto=false
spring.autoconfigure.exclude=org.springframework.cloud.aws.autoconfigure.metrics.CloudWatchExportAutoConfiguration

Таким образом, Spring использует AWS цепочку по умолчанию, но только для учетных данных. AWS SDK использует его также для региона и других параметров конфигурации. Так что это точно ошибка Spring .
Она по-прежнему выдает предупреждение об отсутствии подключения к службе метаданных экземпляра один раз при запуске приложения, но более или менее это решение может использоваться для локального запуска.

Если у нас нет последней строки с исключением CloudWatchExportAutoConfiguration, будет много исключений в трассировке стека при закрытии приложения. Я использую метрики CloudWatch в своем приложении.

Я полагаю, что причиной исключения aws автоматической конфигурации является то, что она конфликтует с приводом загрузки, но я не уверен.

...