diff --git a/src/integrationTest/kotlin/com/hivemq/extensions/aws/cloudwatch/EndToEndIT.kt b/src/integrationTest/kotlin/com/hivemq/extensions/aws/cloudwatch/EndToEndIT.kt index ac57aa6..a1cc1fe 100644 --- a/src/integrationTest/kotlin/com/hivemq/extensions/aws/cloudwatch/EndToEndIT.kt +++ b/src/integrationTest/kotlin/com/hivemq/extensions/aws/cloudwatch/EndToEndIT.kt @@ -18,7 +18,6 @@ import software.amazon.awssdk.services.cloudwatch.model.Metric import software.amazon.awssdk.services.cloudwatch.model.MetricDataQuery import software.amazon.awssdk.services.cloudwatch.model.MetricStat import software.amazon.awssdk.services.cloudwatch.model.Statistic -import java.net.URI import java.time.Duration import java.time.Instant import java.util.concurrent.TimeUnit @@ -44,8 +43,7 @@ class EndToEndIT { "hivemq-aws-cloudwatch-extension", "extension-config.xml" ) - withEnv("AWS_ENDPOINT_OVERRIDE", URI("http://localstack:4566").toString()) - withEnv("AWS_REGION_OVERRIDE", localStack.region) + withEnv("AWS_REGION", localStack.region) withEnv("AWS_ACCESS_KEY_ID", localStack.accessKey) withEnv("AWS_SECRET_ACCESS_KEY", localStack.secretKey) withLogConsumer { println("HIVEMQ: " + it.utf8StringWithoutLineEnding) } diff --git a/src/integrationTest/resources/extension-config.xml b/src/integrationTest/resources/extension-config.xml index b5dd9d0..2f740b7 100644 --- a/src/integrationTest/resources/extension-config.xml +++ b/src/integrationTest/resources/extension-config.xml @@ -1,5 +1,6 @@ + http://localstack:4566 1 true true diff --git a/src/main/java/com/hivemq/extensions/aws/cloudwatch/CloudWatchReporterService.java b/src/main/java/com/hivemq/extensions/aws/cloudwatch/CloudWatchReporterService.java index 1ba7c8a..02b0c7c 100755 --- a/src/main/java/com/hivemq/extensions/aws/cloudwatch/CloudWatchReporterService.java +++ b/src/main/java/com/hivemq/extensions/aws/cloudwatch/CloudWatchReporterService.java @@ -30,8 +30,8 @@ import software.amazon.awssdk.core.client.config.ClientAsyncConfiguration; import software.amazon.awssdk.core.client.config.ClientOverrideConfiguration; import software.amazon.awssdk.core.client.config.SdkAdvancedAsyncClientOption; -import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.cloudwatch.CloudWatchAsyncClient; +import software.amazon.awssdk.services.cloudwatch.CloudWatchAsyncClientBuilder; import java.net.URI; import java.time.Duration; @@ -65,25 +65,23 @@ void startCloudWatchReporter( } else { final Duration apiTimeout = cloudWatchConfig.getApiTimeout().map(Duration::ofMillis).orElse(null); - final String endpointOverride = System.getenv("AWS_ENDPOINT_OVERRIDE"); - final URI endpoint = URI.create(endpointOverride); - System.out.println("ENDPOINT IS " + endpoint); - - final String awsRegion = System.getenv("AWS_REGION_OVERRIDE"); - System.out.println("AWS_REGION IS " + awsRegion); - - final CloudWatchAsyncClient cloudWatchAsync = CloudWatchAsyncClient.builder() - .endpointOverride(endpoint) - .region(Region.of(awsRegion)) - .credentialsProvider(DefaultCredentialsProvider.create()) - .asyncConfiguration(ClientAsyncConfiguration.builder() - .advancedOption(SdkAdvancedAsyncClientOption.FUTURE_COMPLETION_EXECUTOR, executorService) - .build()) - .overrideConfiguration(ClientOverrideConfiguration.builder() - .apiCallTimeout(apiTimeout) - .apiCallAttemptTimeout(apiTimeout) - .build()) - .build(); + final CloudWatchAsyncClientBuilder cloudWatchAsyncClientBuilder = CloudWatchAsyncClient.builder(); + if (configuration.getConfig().getAwsEndpointOverride() != null) { + cloudWatchAsyncClientBuilder.endpointOverride(URI.create(configuration.getConfig() + .getAwsEndpointOverride())); + } + + final CloudWatchAsyncClient cloudWatchAsync = + cloudWatchAsyncClientBuilder.credentialsProvider(DefaultCredentialsProvider.create()) + .asyncConfiguration(ClientAsyncConfiguration.builder() + .advancedOption(SdkAdvancedAsyncClientOption.FUTURE_COMPLETION_EXECUTOR, + executorService) + .build()) + .overrideConfiguration(ClientOverrideConfiguration.builder() + .apiCallTimeout(apiTimeout) + .apiCallAttemptTimeout(apiTimeout) + .build()) + .build(); final CloudWatchReporter.Builder builder = CloudWatchReporter.forRegistry(metricRegistry, cloudWatchAsync, METRIC_NAMESPACE); @@ -94,8 +92,7 @@ void startCloudWatchReporter( if (configuration.getConfig().getReportRawCountValue()) { builder.withReportRawCountValue(); } - cloudWatchReporter = builder - .withZeroValuesSubmission() + cloudWatchReporter = builder.withZeroValuesSubmission() .withReportRawCountValue() .filter(new ConfiguredMetricsFilter(configuration.getEnabledMetrics())) .build(); diff --git a/src/main/java/com/hivemq/extensions/aws/cloudwatch/configuration/entities/Config.java b/src/main/java/com/hivemq/extensions/aws/cloudwatch/configuration/entities/Config.java index 1222614..0d98e1a 100755 --- a/src/main/java/com/hivemq/extensions/aws/cloudwatch/configuration/entities/Config.java +++ b/src/main/java/com/hivemq/extensions/aws/cloudwatch/configuration/entities/Config.java @@ -57,6 +57,9 @@ public class Config { @XmlElement(name = "report-raw-count-value", defaultValue = "false") private final boolean reportRawCountValue = false; + @XmlElement(name = "aws-endpoint-override") + private final @Nullable String awsEndpointOverride = null; + public final @NotNull List getMetrics() { return metrics; } @@ -85,6 +88,10 @@ public boolean getZeroValuesSubmission() { return zeroValuesSubmission; } + public @Nullable String getAwsEndpointOverride() { + return awsEndpointOverride; + } + @Override public final @NotNull String toString() { return "Config{" +