Как получить значение свойств Spring datasoure из хранилища параметров AWS?

В моем приложении весенней загрузки я сохранил spring.datasource.url в файле application.properties. Мне нужно, чтобы URL-адрес / имя пользователя и пароль были защищены, а значения были доступны в хранилище параметров AWS. Я сослался на это doc, чтобы просто добавить зависимость от стартового модуля (spring-cloud-starter-aws-parameter-store-config) для активации поддержки. На самом деле я не знаю, как будут поддерживаться параметры конфигурации и как получить значение хранилища параметров в моем проекте.

Как я могу добиться этого, не используя жестко запрограммированное значение из следующих свойств (application.properties)?

spring.datasource.url= url
spring.datasource.username = root
spring.datasource.password = xxxxxx

person dwayneJohn    schedule 20.11.2019    source источник


Ответы (1)


Чтобы использовать хранилище параметров AWS System Manager в качестве PropertySource в приложении Spring Boot, выполните следующие действия.

Добавьте в build.gradle следующие зависимости:

dependencyManagement {
    imports {
        mavenBom 'org.springframework.cloud:spring-cloud-dependencies:Greenwich.SR3'
    }
}

dependencies {
    implementation 'org.springframework.cloud:spring-cloud-starter-aws-parameter-store-config'
}

Добавьте в src/main/resources/bootstrap.properties свойство, определяющее имя приложения:

spring.application.name=my-app

По умолчанию Spring Cloud AWS использует DefaultAWCredentialsProvider / a> и DefaultAwsRegionProviderChain.

Если приложение запускается не на экземпляре EC2 / Fargate, настройте учетные данные и регион AWS, задав следующие переменные среды:

AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_REGION=us-west-1

Или убедитесь, что у вас есть действительные файлы конфигурации AWS ~/.aws/credentials и ~/.aws/config.

Определите следующие свойства в хранилище параметров AWS System Manager:

/config/my-app/spring.datasource.url
/config/my-app/spring.datasource.username
/config/my-app/spring.datasource.password
person Evgeniy Khyst    schedule 20.11.2019
comment
Можно ли обрабатывать учетные данные AWS из хранилища параметров AWS? Поскольку мы находимся в промежуточной среде, мы не используем конфигурацию с машины EC2. - person dwayneJohn; 21.11.2019
comment
Учетные данные и регион AWS должны быть указаны в переменных среды, системных свойствах или файлах (~ / .aws / credentials). См. docs.aws.amazon.com/AWSJavaSDK. / latest / javadoc / com / amazonaws / - person Evgeniy Khyst; 21.11.2019
comment
Если приложение работает в облаке aws (EC2 / Fargate), то spring-cloud достаточно умен, чтобы получить учетные данные aws. нам не нужно настраивать какие-либо переменные среды или ~ / .aws / *. Убедитесь, что у вас добавлена ​​зависимость spring-cloud-aws-autoconfigure - person Ram; 21.11.2019
comment
Spring Cloud не настраивает учетные данные AWS, он полагается на DefaultAWSCredentialsProviderChain, который делает все возможное, чтобы найти поставщика учетных данных AWS. См. Javadoc. - person Evgeniy Khyst; 22.11.2019