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

How to run the app with spring-cloud-starter-aws locally?

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

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

当我将 AWS SDK 用于 Java 默认 AWS 链时没有任何问题 - 我不需要为应用程序的本地 运行 做任何特定的事情(它在本地读取凭证来自文件和在 EC2 上它使用实例元数据服务)。但是使用 Spring 启动它不能开箱即用,我需要以某种方式启用本地 运行ning。

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

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

将以下行添加到配置中会有所帮助:

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 自动配置背后的理由是它与启动执行器有冲突,但我不确定。