我正试图在Elastic Beanstalk上运行“hello world”复杂性的Web应用程序。使用Elastic Beanstalk上的Spring Boot做这件事情没有任何问题。是否可以在Elastic Beanstalk上运行Spring Cloud AWS应用程序?
但是当我尝试使用Spring AWS云,我遇到无数的问题。参考指南从来没有提到在Beanstalk上运行是可能的,所以也许我正在吠叫错误的树?
问题的根源我似乎遇到是stackResourceRegistryFactoryBean试图确定正在使用的“堆栈”时吹起来 - 即CloudFormation堆栈。但我正在使用Elastic Beanstalk,而不是CloudFormation。根的例外是:
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.cloud.aws.core.env.stack.config.StackResourceRegistryFactoryBean]: Factory method 'stackResourceRegistryFactoryBean' threw exception; nested exception is java.lang.IllegalAccessError: tried to access class org.springframework.cloud.aws.core.env.stack.config.AutoDetectingStackNameProvider from class org.springframework.cloud.aws.autoconfigure.context.ContextStackAutoConfiguration$StackAutoDetectConfiguration
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:189)
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:588)
... 89 more
Caused by: java.lang.IllegalAccessError: tried to access class org.springframework.cloud.aws.core.env.stack.config.AutoDetectingStackNameProvider from class org.springframework.cloud.aws.autoconfigure.context.ContextStackAutoConfiguration$StackAutoDetectConfiguration
at org.springframework.cloud.aws.autoconfigure.context.ContextStackAutoConfiguration$StackAutoDetectConfiguration.stackResourceRegistryFactoryBean(ContextStackAutoConfiguration.java:71)
at org.springframework.cloud.aws.autoconfigure.context.ContextStackAutoConfiguration$StackAutoDetectConfiguration$$EnhancerBySpringCGLIB$$432c7658.CGLIB$stackResourceRegistryFactoryBean$0(<generated>)
at org.springframework.cloud.aws.autoconfigure.context.ContextStackAutoConfiguration$StackAutoDetectConfiguration$$EnhancerBySpringCGLIB$$432c7658$$FastClassBySpringCGLIB$$47c6e7d2.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228)
...
没有出现在生成的EC2实例标签为“AWS:cloudformation:堆栈ID”和“AWS:cloudformation:堆栈名称”如果是相关的,我的理解是Beanstalk在幕后使用CloudFormation堆栈。我已经尝试通过@EnableStackConfiguration手动指定堆栈的名称,但由于名称是生成的,我宁愿不这样做,即使它确实有效。
所以我的问题是: 1)是否有可能运行在弹性魔豆基于AWS-春季云应用? 2)如果是这样,是否需要特殊步骤?例如,我已经发现了有关该角色所需的CloudFormation读访问权限。 3)有没有办法禁用试图从堆栈中获取资源名称的Spring Cloud AWS部分?在这一点上我的应用程序不需要这个。
在此先感谢, ķ
谢谢,这对我非常有帮助。 – shawnjohnson