为什么将 Spring 云应用程序与来自参数存储的 AWS Parameter Store return no 属性 集成?
Why Integrating Spring Cloud application with the AWS Parameter Store return no property from param store?
Intent :我正在研究一个 POC,它打算使用 AWS Parameter store 作为 属性 store.This 将机密应用程序属性存储在 AWS 中SSM 的参数 store.I 正在使用 Java 8 和 spring boot/cloud 版本 2.
Resource :我从 spring 文档中关注 this ref guide
也是一篇综合文章 Integrating the AWS Parameter Store with Spring Cloud。因此试图利用
spring-cloud-starter-aws-parameter-store-config.jar
因此在构建文件中添加了必需的依赖项。
预期输出:
实际输出 :
这是来自 AWS 控制台的快照我正在尝试从 AWS 参数存储
访问下面显示的参数
下面是我的 spring 属性 文件:
application.yml
bootstrap.yml
我在 POM.xml
中使用具有以下依赖项的 Maven
<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>
我是不是漏掉了什么??如果有人已经遇到并解决了这个问题,请告诉我。
我可以从命令行输入和获取参数,只是无法使这个 java 库正常工作。
GitHub 我正在尝试的样本的 repo -
我检查了你的应用程序,它没有像我预期的那样工作,因为我有 ~.aws/config 文件导致 AWS 凭证配置错误(由 DefaultAWSCredentialsProviderChain
引起,阅读更多 here ), 所以我删除了它,我又试了一次,但它没有说 spring 在环境中找不到 aws 区域,所以显然 application.yml 中指定的那些直到spring 从 AWS 参数存储加载属性。
我是如何做到的
我补充了:
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 配置会覆盖您的应用程序中提供的配置。
Intent :我正在研究一个 POC,它打算使用 AWS Parameter store 作为 属性 store.This 将机密应用程序属性存储在 AWS 中SSM 的参数 store.I 正在使用 Java 8 和 spring boot/cloud 版本 2.
Resource :我从 spring 文档中关注 this ref guide
也是一篇综合文章 Integrating the AWS Parameter Store with Spring Cloud。因此试图利用
spring-cloud-starter-aws-parameter-store-config.jar
因此在构建文件中添加了必需的依赖项。
预期输出:
实际输出 :
这是来自 AWS 控制台的快照我正在尝试从 AWS 参数存储
访问下面显示的参数下面是我的 spring 属性 文件:
application.yml
bootstrap.yml
我在 POM.xml
中使用具有以下依赖项的 Maven <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>
我是不是漏掉了什么??如果有人已经遇到并解决了这个问题,请告诉我。
我可以从命令行输入和获取参数,只是无法使这个 java 库正常工作。
GitHub 我正在尝试的样本的 repo -
我检查了你的应用程序,它没有像我预期的那样工作,因为我有 ~.aws/config 文件导致 AWS 凭证配置错误(由 DefaultAWSCredentialsProviderChain
引起,阅读更多 here ), 所以我删除了它,我又试了一次,但它没有说 spring 在环境中找不到 aws 区域,所以显然 application.yml 中指定的那些直到spring 从 AWS 参数存储加载属性。
我是如何做到的
我补充了:
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 配置会覆盖您的应用程序中提供的配置。