为什么将 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 -

GitHub repo link

我检查了你的应用程序,它没有像我预期的那样工作,因为我有 ~.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 配置会覆盖您的应用程序中提供的配置。