我正試圖在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