AWS Secrets Manager Plugin

August 7, 2026 ยท View on GitHub

The AWS Advanced JDBC Wrapper supports usage of database credentials stored as secrets in the AWS Secrets Manager through the AWS Secrets Manager Connection Plugin. When you create a new connection with this plugin enabled, the plugin will retrieve the secret and the connection will be created with the credentials inside that secret.

Plugin Availability

The plugin is available since version 1.0.0.

Enabling the AWS Secrets Manager Connection Plugin

Warning


To use this plugin, you must include the runtime dependencies Jackson Databind and AWS Secrets Manager in your project. These dependencies are required for the AWS Advanced JDBC Wrapper to pass database credentials to the underlying driver.

Which Jackson Databind version to add depends on your Java runtime. The driver ships as a multi-release JAR, and this plugin selects its Jackson implementation based on the running JVM:

Jackson 2.x and 3.x use different Maven coordinates (com.fasterxml.jackson.core vs tools.jackson.core) and different Java packages (com.fasterxml.jackson.* vs tools.jackson.*), so they coexist on the same classpath without conflict. Adding Jackson 3.x will not interfere with a Jackson 2.x that another framework (for example, Spring Boot 3.x) already provides. If you run on Java 17+ and only Jackson 2.x is present, the plugin fails at initialization with NoClassDefFoundError: tools/jackson/core/JacksonException. See the Jackson 3 Migration Guide for background on the package/groupId change.

Warning


To use this plugin, you must provide valid AWS credentials. The AWS SDK relies on the AWS SDK credential provider chain to authenticate with AWS services. If you are using temporary credentials (such as those obtained through AWS STS, IAM roles, or SSO), be aware that these credentials have an expiration time. AWS SDK exceptions will occur and the plugin will not work properly if your credentials expire without being refreshed or replaced. To avoid interruptions:

  • Ensure your credential provider supports automatic refresh (most AWS SDK credential providers do this automatically)
  • Monitor credential expiration times in production environments
  • Configure appropriate session durations for temporary credentials
  • Implement proper error handling for credential-related failures

For more information on configuring AWS credentials, see our AWS credentials documentation

To enable the AWS Secrets Manager Connection Plugin, add the plugin code awsSecretsManager to the wrapperPlugins value, or to the current driver profile.

This plugin requires valid AWS credentials. See more details at AWS Credentials Configuration

Verify plugin compatibility within your driver configuration using the compatibility guide.

AWS Secrets Manager Connection Plugin Parameters

The following properties are required for the AWS Secrets Manager Connection Plugin to retrieve database credentials from the AWS Secrets Manager.

Note: To use this plugin, you will need to set the following AWS Secrets Manager specific parameters.

ParameterValueRequiredDescriptionExampleDefault Value
secretsManagerSecretIdStringYesSet this value to be the secret name or the secret ARN.secretIdnull
secretsManagerRegionStringYes unless the secretsManagerSecretId is a Secret ARN.Set this value to be the region your secret is in.us-east-2us-east-1
secretsManagerEndpointStringNoSet this value to be the endpoint override to retrieve your secret from. This parameter value should be in the form of a URL, with a valid protocol (ex. http://) and domain (ex. localhost). A port number is not required.http://localhost:1234null
secretsManagerExpirationSecIntegerNoThis property sets the time in seconds that secrets are cached before it is re-fetched.600870
secretsManagerSecretUsernamePropertyStringNoSet this value to be the key in the JSON secret that contains the username for database connection.writerUsernameusername
secretsManagerSecretPasswordPropertyStringNoSet this value to be the key in the JSON secret that contains the password for database connection.readerPasswordpassword

NOTE A Secret ARN has the following format: arn:aws:secretsmanager:<Region>:<AccountId>:secret:SecretName-6RandomCharacters

AWS Secrets Manager Connection Plugin v2 (Stale-While-Revalidate)

An alternative version of this plugin, awsSecretsManager2, is available. It uses a Stale-While-Revalidate (SWR) caching strategy that connects immediately using stale cached credentials while refreshing them asynchronously in the background. This eliminates connection latency spikes during credential refresh on cache expiry and allows the driver to remain functional during temporary AWS Secrets Manager outages.

Both plugins share the same credential cache and use identical configuration parameters. To switch, simply change the plugin code from awsSecretsManager to awsSecretsManager2.

For details, see AWS Secrets Manager Connection Plugin v2.

Telemetry Metrics

When telemetry is enabled and a metrics backend is configured through telemetryMetricsBackend, this plugin submits the following metric:

Metric nameMetric typeDescription
secretsManager.fetchCredentials.countCounterNumber of times the plugin resolved the secret. awsSecretsManager increments this on every connection attempt, including attempts served entirely from the credential cache.

Note


awsSecretsManager2 submits the same metric with different semantics: it is incremented only when a call is actually made to AWS Secrets Manager. See Telemetry behavior change.

The call to AWS Secrets Manager is also recorded as a trace segment (fetch credentials).

See Monitoring for the metrics submitted by other plugins.

Secret Data

The secret stored in the AWS Secrets Manager should be a JSON object containing the properties username and password. If the secret contains different key names, you can specify them with the secretsManagerSecretUsernameProperty and secretsManagerSecretPasswordProperty parameters.

Example

AwsSecretsManagerConnectionPluginPostgresqlExample.java demonstrates using the AWS Advanced JDBC Wrapper to make a connection to a PostgreSQL database using credentials fetched from the AWS Secrets Manager.