Skip to content

Commit cfc6064

Browse files
committed
Create custom CloudWatchMetricPublishers for SecretsManager and ParameterStore
1 parent 5b77aab commit cfc6064

File tree

3 files changed

+17
-4
lines changed

3 files changed

+17
-4
lines changed

spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/config/AbstractAwsConfigDataLocationResolver.java

+15-1
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,15 @@
1616
package io.awspring.cloud.autoconfigure.config;
1717

1818
import io.awspring.cloud.autoconfigure.AwsClientProperties;
19+
import io.awspring.cloud.autoconfigure.config.parameterstore.ParameterStorePropertySources;
1920
import io.awspring.cloud.autoconfigure.core.AwsProperties;
2021
import io.awspring.cloud.autoconfigure.core.CredentialsProperties;
2122
import io.awspring.cloud.autoconfigure.core.CredentialsProviderAutoConfiguration;
2223
import io.awspring.cloud.autoconfigure.core.RegionProperties;
2324
import io.awspring.cloud.autoconfigure.core.RegionProviderAutoConfiguration;
2425
import io.awspring.cloud.core.SpringCloudClientConfiguration;
26+
import org.apache.commons.logging.Log;
27+
import org.apache.commons.logging.LogFactory;
2528
import org.springframework.boot.BootstrapContext;
2629
import org.springframework.boot.BootstrapRegistry;
2730
import org.springframework.boot.ConfigurableBootstrapContext;
@@ -160,7 +163,7 @@ else if (awsProperties.getEndpoint() != null) {
160163
Optional<MetricPublisher> metricPublisher;
161164
try {
162165
Class.forName("software.amazon.awssdk.metrics.publishers.cloudwatch.CloudWatchMetricPublisher");
163-
metricPublisher = Optional.of(context.get(CloudWatchMetricPublisher.class));
166+
metricPublisher = Optional.of(context.get(MetricPublisher.class));
164167
}
165168
catch (IllegalStateException | ClassNotFoundException e) {
166169
metricPublisher = Optional.empty();
@@ -176,4 +179,15 @@ else if (awsProperties.getEndpoint() != null) {
176179
return builder;
177180
}
178181

182+
protected void createMetricPublisher(ConfigDataLocationResolverContext resolverContext) {
183+
try {
184+
Class.forName("software.amazon.awssdk.metrics.publishers.cloudwatch.CloudWatchMetricPublisher");
185+
}
186+
catch (IllegalStateException | ClassNotFoundException ignored) {
187+
// ignored, means that the optional dependency is not in the classpath
188+
return;
189+
}
190+
registerBean(resolverContext, MetricPublisher.class, CloudWatchMetricPublisher.builder().build());
191+
}
192+
179193
}

spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/config/parameterstore/ParameterStoreConfigDataLocationResolver.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ public List<ParameterStoreConfigDataResource> resolveProfileSpecific(
5656
registerBean(resolverContext, CredentialsProperties.class,
5757
loadCredentialsProperties(resolverContext.getBinder()));
5858
registerBean(resolverContext, RegionProperties.class, loadRegionProperties(resolverContext.getBinder()));
59-
59+
createMetricPublisher(resolverContext);
6060
registerAndPromoteBean(resolverContext, SsmClient.class, this::createSimpleSystemManagementClient);
6161

6262
ParameterStorePropertySources sources = new ParameterStorePropertySources();

spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/config/secretsmanager/SecretsManagerConfigDataLocationResolver.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,8 @@ public List<SecretsManagerConfigDataResource> resolveProfileSpecific(
6060
registerBean(resolverContext, CredentialsProperties.class,
6161
loadCredentialsProperties(resolverContext.getBinder()));
6262
registerBean(resolverContext, RegionProperties.class, loadRegionProperties(resolverContext.getBinder()));
63-
63+
createMetricPublisher(resolverContext);
6464
registerAndPromoteBean(resolverContext, SecretsManagerClient.class, this::createAwsSecretsManagerClient);
65-
6665
SecretsManagerPropertySources propertySources = new SecretsManagerPropertySources();
6766

6867
List<String> contexts = getCustomContexts(location.getNonPrefixedValue(PREFIX));

0 commit comments

Comments
 (0)