2

我正在编写一个使用Spring Cloud AWS的 spring boot 应用程序。当我开始包含 Spring Cloud AWS bean 时,我注意到 Spring 应用程序上下文的加载速度大大减慢。以前上下文会在几秒钟内开始,但现在需要大约 3 到 5 分钟!

我已经追踪getProperty()AmazonEc2InstanceDataPropertySource. 这多次尝试访问链接本地 IP 地址 (169.254.169.254),在 Amazon 网络中运行应用程序时可以访问该地址,但不能从外部访问。似乎在亚马逊网络之外运行时,代码只是等待所有连接尝试失败,我猜这是在套接字最终超时时发生的?

我的第一个想法是这个超时可能是可配置的,或者我可以配置一个配置文件以确保在本地运行时不会发生这种情况,但我在文档中找不到任何东西(http://cloud.spring. io/spring-cloud-aws/spring-cloud-aws.html)完全提到了这一点。

感谢这里的任何智慧,谢谢!

4

2 回答 2

2

查看类似问题https://github.com/aws/aws-sdk-java/issues/450

我意识到,对于我的本地环境(Windows 7),唯一的方法是在链接本地地址 169.254.169.254 上定义防火墙(快速失败)。还没有找到为什么我的 windows7 与具有相同应用程序的 Mac/win8 的行为不同(如此缓慢)的具体原因。

无论如何,在使用本地开发环境(EC2 之外)时,我没有找到任何禁用与 ec2-instance-metadata 通信的全局标志。

cloud.aws.stack.auto=false 有点帮助,但还不够,所以我设置了防火墙

于 2015-08-04T08:35:57.943 回答
0

该问题已在spring-cloud-aws 2.3中修复,默认情况下已禁用。如果您仍在使用旧版本,有一个解决方法 - 您应该明确排除org.springframework.cloud.aws.autoconfigure.context.ContextInstanceDataAutoConfiguration.

例如在 application.yml 中:

spring.autoconfigure.exclude=org.springframework.cloud.aws.autoconfigure.context.ContextInstanceDataAutoConfiguration
于 2021-08-31T12:26:26.147 回答