如何在本地使用spring-cloud-starter-aws运行应用程序?

问题描述 投票:1回答:1

我需要在本地运行基于Spring Boot的应用。它使用spring-cloud-starter-aws依赖关系。问题在于它总是尝试连接到EC2元数据服务。设置“ cloud.aws。*”属性没有帮助。我希望将使用默认的AWS凭证链,将从AWS首选方式之一读取凭证和区域(例如〜/ .aws / config和〜/ .aws / credentials文件)。我试图设置cloud.aws.credentials.useDefaultAwsCredentialsChain属性,但spring-cloud-starter-aws不在乎

我发现examples使用CloudFormation堆栈是出于非常奇怪的原因在本地运行应用程序。

[当我使用适用于Java的AWS开发工具包时,将默认使用AWS链,而不会出现任何问题-我不需要为应用程序的本地运行做任何特定的事情(在本地它从文件中读取凭证,在EC2上它使用实例元数据服务)。但是使用Spring Boot不能立即使用,我需要以某种方式启用本地运行。

我使用的是Spring Boot的2.2.2.RELEASE版本和Spring Cloud的2.2.1.RELEASE版本。我感觉他们引入了回归,因为在以前的版本中,回归没有问题。

关于如何在本地运行应用程序的任何想法?

java amazon-web-services spring-boot spring-cloud
1个回答
0
投票

在配置中添加以下几行会有所帮助:

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

因此,Spring使用AWS默认链,但仅用于凭证。 AWS开发工具包也将其用于区域和其他配置参数。 所以这肯定是Spring错误。它仍然发出警告,表示在应用程序启动期间一次没有与实例元数据服务的连接,但是该解决方案或多或少可以用于本地运行。

如果没有除CloudWatchExportAutoConfiguration之外的最后一行,则在关闭应用程序时,堆栈跟踪中会有很多异常。我在应用程序中使用CloudWatch指标。

我想排除aws自动配置的原因是它与启动执行器有冲突,但我不确定。

© www.soinside.com 2019 - 2024. All rights reserved.