Skip to content

Commit 161d880

Browse files
authored
Add logging for when secret is unable to be retrieved (#6014)
Signed-off-by: Taylor Gray <tylgry@amazon.com>
1 parent 8a36247 commit 161d880

3 files changed

Lines changed: 28 additions & 4 deletions

File tree

data-prepper-plugin-framework/src/main/java/org/opensearch/dataprepper/plugin/ExtensionsApplier.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
package org.opensearch.dataprepper.plugin;
77

88
import org.opensearch.dataprepper.model.plugin.ExtensionPlugin;
9+
import org.slf4j.Logger;
10+
import org.slf4j.LoggerFactory;
911

1012
import javax.annotation.PostConstruct;
1113
import javax.annotation.PreDestroy;
@@ -16,6 +18,8 @@
1618

1719
@Named("extensionsApplier")
1820
class ExtensionsApplier {
21+
private static final Logger LOG = LoggerFactory.getLogger(ExtensionsApplier.class);
22+
1923
private final DataPrepperExtensionPoints dataPrepperExtensionPoints;
2024
private final ExtensionLoader extensionLoader;
2125
private List<? extends ExtensionPlugin> loadedExtensionPlugins = Collections.emptyList();
@@ -32,6 +36,8 @@ class ExtensionsApplier {
3236
void applyExtensions() {
3337
loadedExtensionPlugins = extensionLoader.loadExtensions();
3438

39+
LOG.info("Loaded {} extensions: {}", loadedExtensionPlugins.size(), loadedExtensionPlugins);
40+
3541
for (ExtensionPlugin extensionPlugin : loadedExtensionPlugins) {
3642
extensionPlugin.apply(dataPrepperExtensionPoints);
3743
}

data-prepper-plugins/aws-plugin/src/main/java/org/opensearch/dataprepper/plugins/aws/AwsSecretsSupplier.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import org.opensearch.dataprepper.model.plugin.FailedToUpdatePluginConfigValueException;
1919
import org.slf4j.Logger;
2020
import org.slf4j.LoggerFactory;
21+
import software.amazon.awssdk.awscore.exception.AwsServiceException;
2122
import software.amazon.awssdk.services.secretsmanager.SecretsManagerClient;
2223
import software.amazon.awssdk.services.secretsmanager.model.GetSecretValueRequest;
2324
import software.amazon.awssdk.services.secretsmanager.model.GetSecretValueResponse;
@@ -127,10 +128,16 @@ private Object retrieveSecretsFromSecretManager(final AwsSecretManagerConfigurat
127128
final GetSecretValueResponse getSecretValueResponse;
128129
try {
129130
getSecretValueResponse = secretsManagerClient.getSecretValue(getSecretValueRequest);
130-
} catch (Exception e) {
131+
} catch (final AwsServiceException e) {
132+
LOG.error("Unable to retrieve secret {}: {}", getSecretValueRequest.secretId(), e.getMessage());
131133
throw new RuntimeException(
132134
String.format("Unable to retrieve secret: %s",
133135
awsSecretManagerConfiguration.getAwsSecretId()), e);
136+
} catch (final Exception ex) {
137+
LOG.error("Unable to retrieve secret {} due to unexpected error", getSecretValueRequest.secretId(), ex);
138+
throw new RuntimeException(
139+
String.format("Unable to retrieve secret: %s",
140+
awsSecretManagerConfiguration.getAwsSecretId()), ex);
134141
}
135142

136143
try {

data-prepper-plugins/aws-plugin/src/test/java/org/opensearch/dataprepper/plugins/aws/AwsSecretsSupplierTest.java

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,14 @@
1717
import org.junit.jupiter.api.Test;
1818
import org.junit.jupiter.api.extension.ExtendWith;
1919
import org.junit.jupiter.params.ParameterizedTest;
20+
import org.junit.jupiter.params.provider.Arguments;
21+
import org.junit.jupiter.params.provider.MethodSource;
2022
import org.junit.jupiter.params.provider.ValueSource;
2123
import org.mockito.ArgumentMatchers;
2224
import org.mockito.Mock;
2325
import org.mockito.junit.jupiter.MockitoExtension;
2426
import org.opensearch.dataprepper.aws.api.AwsCredentialsSupplier;
27+
import software.amazon.awssdk.awscore.exception.AwsServiceException;
2528
import software.amazon.awssdk.services.secretsmanager.SecretsManagerClient;
2629
import software.amazon.awssdk.services.secretsmanager.model.GetSecretValueRequest;
2730
import software.amazon.awssdk.services.secretsmanager.model.GetSecretValueResponse;
@@ -31,6 +34,7 @@
3134

3235
import java.util.Map;
3336
import java.util.UUID;
37+
import java.util.stream.Stream;
3438

3539
import static org.hamcrest.CoreMatchers.equalTo;
3640
import static org.hamcrest.MatcherAssert.assertThat;
@@ -155,13 +159,20 @@ void testRetrieveValueWithoutKey(String testValue) {
155159
assertThat(objectUnderTest.retrieveValue(TEST_AWS_SECRET_CONFIGURATION_NAME), equalTo(testValue));
156160
}
157161

158-
@Test
159-
void testConstructorWithGetSecretValueFailure() {
160-
when(secretsManagerClient.getSecretValue(eq(getSecretValueRequest))).thenThrow(secretsManagerException);
162+
@ParameterizedTest
163+
@MethodSource("exceptionProvider")
164+
void testConstructorWithGetSecretValueFailure(final Class<Throwable> e) {
165+
when(secretsManagerClient.getSecretValue(eq(getSecretValueRequest))).thenThrow(e);
161166
assertThrows(RuntimeException.class, () -> new AwsSecretsSupplier(
162167
secretValueDecoder, awsSecretPluginConfig, OBJECT_MAPPER, awsCredentialsSupplier));
163168
}
164169

170+
private static Stream<Arguments> exceptionProvider() {
171+
return Stream.of(
172+
Arguments.of(AwsServiceException.class),
173+
Arguments.of(RuntimeException.class));
174+
}
175+
165176
@Test
166177
void testRefreshSecretsWithKey() {
167178
final String testValue = "{\"key\":\"oldValue\"}";

0 commit comments

Comments
 (0)