AWS Secrets Manager和springboot

问题描述 投票:1回答:1

我正在尝试使用AWS Secrets Manager来存储springboot微服务的机密。我可以配置所有内容,并且可以看到启动时应用程序正在加载一个秘密信息,以我为例,它是一个json文档。特别是我正在使用

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

[因为我注意到AwsSecretsManagerPropertySource能够将响应json解析为对象映射,所以我尝试使用嵌套结构作为秘密,但是如果我尝试使用@Value注释注入json的任何字段,则转换失败例外。因此,如果我的秘密是仅包含字符串作为字段的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?非常感谢!

spring-boot spring-cloud aws-secrets-manager spring-cloud-aws
1个回答
0
投票

经过几次尝试,我便能够访问从AWS Secret Manager检索的地图/列表,将Environment对象注入配置并调用:

@Configuration
public class MyConfigurationClass {

  @Autowired
  Environment environment;

  @Bean 
  public MyBean myBean() {
     List sites = environment.getProperty("sites", List.class);
     ...
  }
© www.soinside.com 2019 - 2024. All rights reserved.