在启动SpringBoot报出(没有可用的EC2元数据,因为应用程序没有在EC2环境中运行.)求解答!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在启动SpringBoot报出(没有可用的EC2元数据,因为应用程序没有在EC2环境中运行.)求解答!相关的知识,希望对你有一定的参考价值。

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

参考技术A 原因:控制层同一请求映射到两个方法
解决:查看报错地方,找出同一请求映射到两个方法的请求路径,修改后即可。

记一次打包的诡异现象

一、前情提要:

  今天线上打包,发现启动正常,但是访问异常,看日志也没有打印出什么异常信息。

  更新的微服务包访问的时候一直报出【403】,访问被拒

  项目架构:springBoot + maven

  

二、机缘巧合:

  上午出现这个问题当场没有找到解决办法,明明启动正常怎么就访问不了?先放下了这个问题

  下午另一个项目调试,也是部署到服务器后,访问拒绝,当时怀疑打包配置有问题,我就在本地自己打了包部署上去,项目启动正常!!!

  这是怎么回事?使用比对工具首先发现,包里少了某些功能代码,但是这不该是影响运行的理由啊?

  之后再看其它的不同,发现依赖的一个基础包【common】里少了几个依赖包,并且mavne的pom配置也不尽相同

  【判定:是打包环节出了问题】

 

三、后知后觉:

  现在想想,特定的包访问被拒绝,而所有的包都依赖【common】包,应该想到是特定包打包的时候,依赖包不一致导致的

  项目都是【eureka】的,不能访问,而不是报错,访问权限控制,不就是依赖的【common】包里的配置吗?

  所以,打包的话,尽量一次全打,哪怕只用其中一个,保证基础依赖包唯一

  单独打包的话,可能导致,引用了上次的【common】包,或者在本地存在的本身就有异常的【common】包

  【原因猜想-1:目标包是单独打的,基础依赖包出错】

  【原因猜想-2:打包的机器,maven工具出了问题,依赖错误或者依赖缺失】

 

四、总结:

  针对这种框架,如果服务部署运行正常,而配置又没有问题的话,好好的就是不能访问,那么就【重新打包】试试,说不定就好了

  不要钻死胡同,一切都正常了,无法排查原因了,就不要自己瞎想了

  看着正常,但是不行,那就换一个试试,不要纠结,换一个好了,就对比,看哪里不一样,方便下次排查

  

  

  

以上是关于在启动SpringBoot报出(没有可用的EC2元数据,因为应用程序没有在EC2环境中运行.)求解答!的主要内容,如果未能解决你的问题,请参考以下文章

连接 *** 后 EC2 实例不可用

如何在 ec2 实例上运行元数据库(没有弹性 beantalk)

有没有办法在 ec2 实例中获取实例 ID [重复]

如何在 2 个不同可用区的 2 个 ec2 实例之间分配 2 个任务?

使用 EC2 可用区的最佳实践是啥?

尝试从其中检索 EC2 实例 ID 元数据时超时