Как мне вытащить свои пароли из AWS Secret Manager к весне?
Я хотел бы получить пароль к своей базе данных из AWS Secret Manager на основе имени ключа, заданного в моих файлах свойств. Не похоже, что я могу читать свойства из application.yml
Файл, как я надеялся, однако. В приведенном ниже коде my.project.aws-secret
а также my.project.region
оба получены как null
,
Я ошибаюсь, ожидая, что эти свойства могут быть восстановлены в этот момент? И это правильный подход для достижения этого, или есть более легкий путь?
Вот код В настоящее время я пытаюсь сделать это с помощью ApplicationListener
, но я видел ту же проблему, реализующую это как EnvironmentPostProcessor
также:
ApplicationListener
public class DatasourceAwsProperties implements ApplicationListener<ApplicationEnvironmentPreparedEvent> {
@Override
public void onApplicationEvent(ApplicationEnvironmentPreparedEvent event) {
ConfigurableEnvironment environment = event.getEnvironment();
Properties props = new Properties();
String datasourcePassword = environment.getProperty("my.project.aws-secret"); // why is this null?
String awsRegion = environment.getProperty("my.project.region"); // why is this null?
String secret = getSecret(datasourcePassword, awsRegion);
MapPropertySource newProperties = new MapPropertySource("newProperties", ImmutableMap.of("spring.datasource.password", secret));
environment.getPropertySources().addLast(newProperties);
}
public static String getSecret(String secretName, String region) {
// gets secret from aws
}
application.yml
lots:
of:
properties: ...
my:
project:
aws-secret: the-name-of-the-secret-in-aws
region: us-east-1