AWS Менеджер секретов и Springboot - PullRequest
1 голос
/ 07 мая 2020

Я пытаюсь использовать AWS Secrets Manager для хранения секретов микросервиса springboot. Мне удалось все настроить, и я вижу, что при запуске приложение загружает секрет, который в моем случае является документом json. В частности, я использую

'org.springframework.cloud:spring-cloud-starter-aws-secrets-manager-config:2.2.1.RELEASE'

Поскольку я заметил, что AwsSecretsManagerPropertySource смог проанализировать ответ json на карту объектов, я попытался использовать вложенную структуру для своего секрета, но если я попытался ввести какие-либо поле json с использованием аннотации @Value завершается ошибкой с исключением преобразования. Итак, если мой секрет - json с только строкой в ​​качестве полей, я могу их ввести. Например:

{
"a.b":"value"
...
}

с использованием

@Value("${a.b}")
String field;

он работает нормально, но если у меня есть секрет, например

{
"a": {
  "b":"value"
}

, я видел, что json успешно проанализирован, но с использованием аннотации

@Value("${a.b}")
String field;

Я не могу получить поле, и если я попробую что-то вроде

@Value("${a}")
Map<String, String> field;

, произойдет сбой из-за проблемы преобразования (невозможно для преобразования из LinkedHashMap в строку). Есть ли способ превратить вложенную структуру в секрет или я должен просто использовать json без вложенных объектов? Большое спасибо!

1 Ответ

0 голосов
/ 08 мая 2020

После нескольких попыток я смог получить доступ к картам / спискам, которые я получал из AWS Secret Manager, введя объект Environment в конфигурацию и вызвав:

@Configuration
public class MyConfigurationClass {

  @Autowired
  Environment environment;

  @Bean 
  public MyBean myBean() {
     List sites = environment.getProperty("sites", List.class);
     ...
  }
...