Java 为什么将SpringCloud应用程序与AWS参数存储集成时不会从param存储返回任何属性?
意图:我正在开发一个POC,打算将AWS参数存储用作属性存储。这将在AWS SSM的参数存储中存储机密应用程序属性。我正在使用Java 8和spring boot/cloud版本2 资源:我从spring文档中获得 及 也是一篇综合性的文章。因此正在尝试利用 spring-cloud-starter-aws-parameter-store-config.jar 因此在构建文件中添加了必需的依赖项 预期输出: 实际产出: 这里是AWS控制台的快照我正试图从AWS参数存储访问下面显示的参数 下面是我的spring属性文件: application.ymlJava 为什么将SpringCloud应用程序与AWS参数存储集成时不会从param存储返回任何属性?,java,amazon-web-services,spring-boot,spring-cloud,spring-cloud-config,Java,Amazon Web Services,Spring Boot,Spring Cloud,Spring Cloud Config,意图:我正在开发一个POC,打算将AWS参数存储用作属性存储。这将在AWS SSM的参数存储中存储机密应用程序属性。我正在使用Java 8和spring boot/cloud版本2 资源:我从spring文档中获得 及 也是一篇综合性的文章。因此正在尝试利用 spring-cloud-starter-aws-parameter-store-config.jar 因此在构建文件中添加了必需的依赖项 预期输出: 实际产出: 这里是AWS控制台的快照我正试图从AWS参数存储访问下面显示的参数 下
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.1.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-aws-parameter-store-config</artifactId>
</dependency>
</dependencies>
bootstrap.yml
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.1.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-aws-parameter-store-config</artifactId>
</dependency>
</dependencies>
在POM.xml
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.1.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-aws-parameter-store-config</artifactId>
</dependency>
</dependencies>
org.springframework.boot
我检查了你的应用程序,它没有像我预期的那样工作,因为我有~.aws/config文件,这导致了aws凭据的错误配置(原因是DefaultAWSCredentialsProviderChain
,请阅读更多),所以我删除了它,并再次尝试,但失败的原因是spring在环境中找不到aws区域,因此,显然,只有在AWS参数存储中的弹簧负载属性出现之前,才会使用application.yml中指定的那些
我是如何做到的
我补充说:
System.setProperty("aws.accessKeyId","My_Key");
System.setProperty("aws.secretKey","Secret");
System.setProperty("aws.region","us-east-1");//same region where all your params exist
在SpringApplication.run(DemoApplication.class,args)之前代码>然后它工作了
将aws.region
更改为另一个未定义参数值的区域时,我得到的结果与您的结果完全相同(空值)。
确保您的计算机或EC2实例上没有任何aws配置会覆盖应用程序中提供的配置。参数存储的屏幕是否与ap-south-1来自同一地区?@slimane Yes。。来自同一地区。。ap-south-1,事实上我在aws实例的开发环境中仅使用tht区域你说我在aws的开发环境中仅使用tht区域是什么意思instance@slimane我有特定于环境的aws帐户,即prod和dev的帐户不同。在特定于开发的帐户中,所有概念验证仅在ap-south-1地区完成。我可以使用CLI从运行此应用程序的同一台机器上检索,它默认为ap-south-1。可能region.auto=true属性将覆盖静态值,您可以验证它吗?是的,您是对的。。我对.aws/config文件有问题