如何在我的 Spring Boot 应用程序中从 aws appconfig 访问配置?
由于 appconfig 是一项新服务,是否有任何我们可以使用的 java sdk,因为我在https://github.com/aws/aws-sdk-java/tree/master/src/samples中没有看到任何关于 appconfig 的内容
如何在我的 Spring Boot 应用程序中从 aws appconfig 访问配置?
由于 appconfig 是一项新服务,是否有任何我们可以使用的 java sdk,因为我在https://github.com/aws/aws-sdk-java/tree/master/src/samples中没有看到任何关于 appconfig 的内容
以下是我如何将 AWS AppConfig 集成到我的 Spring Boot 项目中。
首先,让我们确保我们的 pom.xml 中有这个依赖项:
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-appconfig</artifactId>
<version>1.12.134</version>
</dependency>
接下来,让我们创建一个我们自己的 AWS AppConfig Client 的简单配置类:
@Configuration
public class AwsAppConfiguration {
private static final Logger LOGGER = LoggerFactory.getLogger(AwsAppConfiguration.class);
private final AmazonAppConfig appConfig;
private final GetConfigurationRequest request;
public AwsAppConfiguration() {
appConfig = AmazonAppConfigClient.builder().build();
request = new GetConfigurationRequest();
request.setClientId("clientId");
request.setApplication("FeatureProperties");
request.setConfiguration("JsonProperties");
request.setEnvironment("dev");
}
public JSONObject getConfiguration() throws UnsupportedEncodingException {
GetConfigurationResult result = appConfig.getConfiguration(request);
String message = String.format("contentType: %s", result.getContentType());
LOGGER.info(message);
if (!Objects.equals("application/json", result.getContentType())) {
throw new IllegalStateException("config is expected to be JSON");
}
String content = new String(result.getContent().array(), "ASCII");
return new JSONObject(content).getJSONObject("feature");
}
}
最后,让我们创建一个从 AWS AppConfig 轮询配置的计划任务:
@Configuration
@EnableScheduling
public class AwsAppConfigScheduledTask {
private static final Logger LOGGER = LoggerFactory.getLogger(AwsAppConfigScheduledTask.class);
@Autowired
private FeatureProperties featureProperties;
@Autowired
private AwsAppConfiguration appConfiguration;
@Scheduled(fixedRate = 5000)
public void pollConfiguration() throws UnsupportedEncodingException {
LOGGER.info("polls configuration from aws app config");
JSONObject externalizedConfig = appConfiguration.getConfiguration();
featureProperties.setEnabled(externalizedConfig.getBoolean("enabled"));
featureProperties.setLimit(externalizedConfig.getInt("limit"));
}
}
我遇到了这个问题,因为我还试图弄清楚如何最好地将 AWS AppConfig 集成到 Spring Boot 中。
这是我创建的一篇文章。你可以在这里访问它:https ://levelup.gitconnected.com/create-features-toggles-using-aws-appconfig-in-spring-boot-7454b122bf91
此外,源代码可在 github 上获得:https ://github.com/emyasa/medium-articles/tree/master/aws-spring-boot/app-config