Why Integrating Spring Cloud application with the AWS Parameter Store return no property from param store?

Intent : I am working on a POC which intends to use AWS Parameter store as a property store.This would store the confidential application properties in AWS SSM's Parameter store.I am using Java 8 with spring boot/cloud version 2.

Resource : I followed this ref guide from spring docs and

also a comprehensive article Integrating the AWS Parameter Store with Spring Cloud .Hence was trying to utilize

spring-cloud-starter-aws-parameter-store-config.jar

and hence added required dependency in the build file.

Expected output :

enter image description here

Actual output :

enter image description here

Here is snapshot from AWS console I am trying to access below shown parameters from AWS parameter store

enter image description here

Below are my spring property files:

application.yml

enter image description here

bootstrap.yml

enter image description here

I am using maven with below dependencies in 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>

Am I missing something here?? Please let me know if someone has already faced and resolved this issue.

I am able to put and get parameter from command line,its just not able to get this java lib working.

GitHub repo of the sample I am trying -

GitHub repo link

Answers 1

  • I checked your app, it didn't work as expected for me as I had ~.aws/config file which leads to misconfiguration of AWS credentials(cause by DefaultAWSCredentialsProviderChain, read more here ), so I removed it, and I tried again but it fails saying that spring can't find aws region in the env, so apparently those specified in application.yml won't be used until spring loads properties from AWS parameter store.

    How I made it work

    I added:

            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
    

    before SpringApplication.run(DemoApplication.class, args); and then it worked.

    when changing the aws.region to another one where there are no params value defined I got the exact same result as yours (empty values).

    make sure there isn't any aws config on your machine or EC2 instance that will override those provided in your app.


Related Articles