我正在使用 SPRING AWS Cloud 版本 1.0.3.RELEASE 包 - 即我们的 SPRING BOOT 可执行 jar 应用程序中的 spring-cloud-aws-core、context、autoconfigure、jdbc 和消息传递。但是,当应用程序初始化时出现错误 - 在给定路径中找不到 AWS 凭证配置文件文件。
具体异常情况如下:
2015-12-11 08:52:45.778 DEBUG 2525 --- [ main] o.s.b.f.s.DefaultListableBeanFactory : Creating instance of bean '(inner bean)#566a55ed'
2015-12-11 08:52:45,789 8058 [main] DEBUG org.springframework.beans.BeanUtils -
- No property editor [com.amazonaws.auth.profile.ProfilesConfigFileEditor] found for type com.amazonaws.auth.profile.ProfilesConfigFile according to 'Editor' suffix convention
2015-12-11 08:52:45.789 DEBUG 2525 --- [ main] org.springframework.beans.BeanUtils : No property editor [com.amazonaws.auth.profile.ProfilesConfigFileEditor] found for type com.amazonaws.auth.profile.ProfilesConfigFile according to 'Editor' suffix convention
2015-12-11 08:52:45,793 8062 [main] DEBUG o.s.beans.TypeConverterDelegate -
- Construction via String failed for type [com.amazonaws.auth.profile.ProfilesConfigFile]
org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.amazonaws.auth.profile.ProfilesConfigFile]: Constructor threw exception; nested exception is java.lang.IllegalArgumentException: AWS credential profiles file not found in the given path: /opt/wmc/myapp/bin/default
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:163) ~[spring-beans-4.2.3.RELEASE.jar!/:4.2.3.RELEASE]
at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:238) [spring-beans-4.2.3.RELEASE.jar!/:4.2.3.RELEASE]
at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:108) [spring-beans-4.2.3.RELEASE.jar!/:4.2.3.RELEASE]
at org.springframework.beans.TypeConverterSupport.doConvert(TypeConverterSupport.java:64) [spring-beans-4.2.3.RELEASE.jar!/:4.2.3.RELEASE]
at org.springframework.beans.TypeConverterSupport.convertIfNecessary(TypeConverterSupport.java:47) [spring-beans-4.2.3.RELEASE.jar!/:4.2.3.RELEASE]
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:704) [spring-beans-4.2.3.RELEASE.jar!/:4.2.3.RELEASE]
at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:185) [spring-beans-4.2.3.RELEASE.jar!/:4.2.3.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1143) [spring-beans-4.2.3.RELEASE.jar!/:4.2.3.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1046) [spring-beans-4.2.3.RELEASE.jar!/:4.2.3.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:510) [spring-beans-4.2.3.RELEASE.jar!/:4.2.3.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) [spring-beans-4.2.3.RELEASE.jar!/:4.2.3.RELEASE]
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:299) [spring-beans-4.2.3.RELEASE.jar!/:4.2.3.RELEASE]
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:129) [spring-beans-4.2.3.RELEASE.jar!/:4.2.3.RELEASE]
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveManagedList(BeanDefinitionValueResolver.java:382) [spring-beans-4.2.3.RELEASE.jar!/:4.2.3.RELEASE]
Caused by: java.lang.IllegalArgumentException: AWS credential profiles file not found in the given path: /opt/wmc/myapp/bin/default
at com.amazonaws.auth.profile.internal.ProfilesConfigFileLoader.loadProfiles(ProfilesConfigFileLoader.java:45) ~[aws-java-sdk-core-1.10.36.jar!/:na]
at com.amazonaws.auth.profile.ProfilesConfigFile.loadProfiles(ProfilesConfigFile.java:194) ~[aws-java-sdk-core-1.10.36.jar!/:na]
at com.amazonaws.auth.profile.ProfilesConfigFile.<init>(ProfilesConfigFile.java:119) ~[aws-java-sdk-core-1.10.36.jar!/:na]
at com.amazonaws.auth.profile.ProfilesConfigFile.<init>(ProfilesConfigFile.java:101) ~[aws-java-sdk-core-1.10.36.jar!/:na]
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_65]
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:1.8.0_65]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.8.0_65]
at java.lang.reflect.Constructor.newInstance(Constructor.java:422) ~[na:1.8.0_65]
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:147) ~[spring-beans-4.2.3.RELEASE.jar!/:4.2.3.RELEASE]
即使这个问题来自很多年前,仍然在发生,并且很难找到正确的解决方案,所以,让我尝试帮助那些面临这个问题的人
AWS credential profiles file not found in the given path:
/path/to/some/app/default
问题,使用AWS + Spring Boot。
引发此错误的原因之一是应用程序正在寻找凭据配置文件
# the user home directory
~/.aws/credentials
从 CLI 登录 AWS 后(短期身份验证)。
AWS 库正在寻找
[default]
配置文件,但就我而言,凭证变量保存在一个非常不同的配置文件下(例如 [my-dev-profile]
)。有了这个,我尝试将 env 变量作为参数与保存的配置文件传递到 Spring Boot 应用程序没有任何区别,错误仍然存在。
在我确定凭据位于正确的位置后,在
[default]
文件中的 ~/.aws/credentials
配置文件下,错误消失了,应用程序能够启动。