Skip to content

add user documentation for DSQL plugin #1478

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

danielfrankcom
Copy link

Summary

This PR adds user documentation and associated examples for using the AWS Aurora DSQL IAM authentication plugin.

This accompanies the change in #1477, which adds the dsql plugin implementation and tests.

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

@danielfrankcom danielfrankcom force-pushed the dev/frankcom/dsql-docs branch from cf70258 to 96d089f Compare July 16, 2025 21:25
@danielfrankcom
Copy link
Author

Update 96d089f adds references to the new docs/samples to the top-level documentation which I missed in the initial push.

The diff for the example table update is a little messy because the table cells are not aligned on main. Most of the lines are just whitespace changes, but I add 3 new rows:

  • A reference to the DSQL DriverManager example
  • A reference to the DSQL DataSource example
  • A reference to the existing DataSource example which was missing from the table

@danielfrankcom
Copy link
Author

Update to 7f0d46e changes the dsql plugin name to iamDsql.

@danielfrankcom danielfrankcom force-pushed the dev/frankcom/dsql-docs branch from 7f0d46e to 71a809e Compare July 17, 2025 21:18
@danielfrankcom
Copy link
Author

Change to 71a809e updates the wording around iamRegion, and gives a bit more detail about when it is required.

@danielfrankcom danielfrankcom force-pushed the dev/frankcom/dsql-docs branch from 71a809e to c79cadd Compare July 21, 2025 17:47
@danielfrankcom
Copy link
Author

Update to c79cadd is a simple rebase, mostly to trigger CI jobs.

@danielfrankcom danielfrankcom force-pushed the dev/frankcom/dsql-docs branch from c79cadd to ebcf5d8 Compare July 24, 2025 23:56
@danielfrankcom
Copy link
Author

danielfrankcom commented Jul 24, 2025

Update to ebcf5d8 improves some of the messaging in the main README.md file to point out the modularity of plugins, and indicate which database types are relevant for which plugins.


The AWS JDBC Driver is targeted to work with **any** existing JDBC driver. Currently, the AWS JDBC Driver has been validated to support the [PostgreSQL JDBC Driver](https://github.com/pgjdbc/pgjdbc), [MySQL JDBC Driver](https://github.com/mysql/mysql-connector-j), and [MariaDB JDBC Driver](https://github.com/mariadb-corporation/mariadb-connector-j).

In conjunction with the JDBC Drivers for PostgreSQL, MySQL, and MariaDB, the AWS JDBC Driver enables functionalities from Amazon Aurora such as fast failover for PostgreSQL and MySQL Aurora clusters. It also introduces integration with AWS authentication services such as [AWS Identity and Access Management (IAM)](https://aws.amazon.com/iam/) and [AWS Secrets Manager](https://aws.amazon.com/secrets-manager/).
The AWS JDBC Driver provides modular functionality through feature plugins, with each plugin being relevant to specific services based on their architecture and capabilities. For example, [AWS Identity and Access Management (IAM)](https://aws.amazon.com/iam/) authentication is supported across multiple services, while [AWS Secrets Manager](https://aws.amazon.com/secrets-manager/) applies to services that support password-based authentication. The fast failover plugin provides reduced recovery time during failover for Aurora PostgreSQL and Aurora MySQL clusters, though it is not applicable to Aurora DSQL due to its active-active architecture.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
The AWS JDBC Driver provides modular functionality through feature plugins, with each plugin being relevant to specific services based on their architecture and capabilities. For example, [AWS Identity and Access Management (IAM)](https://aws.amazon.com/iam/) authentication is supported across multiple services, while [AWS Secrets Manager](https://aws.amazon.com/secrets-manager/) applies to services that support password-based authentication. The fast failover plugin provides reduced recovery time during failover for Aurora PostgreSQL and Aurora MySQL clusters, though it is not applicable to Aurora DSQL due to its active-active architecture.
The AWS JDBC Driver provides modular functionality through feature plugins, with each plugin being relevant to specific database services based on their architecture and capabilities. For example, [AWS Identity and Access Management (IAM)](https://aws.amazon.com/iam/) authentication is supported across multiple services, while [AWS Secrets Manager](https://aws.amazon.com/secrets-manager/) applies to services that support password-based authentication. The fast failover plugin provides reduced recovery time during failover for Aurora PostgreSQL and Aurora MySQL clusters, though it is not applicable to Aurora DSQL due to its active-active architecture.


The main idea behind the AWS JDBC Driver is to add a software layer on top of an existing JDBC driver that would enable all the enhancements brought by Aurora, without requiring users to change their workflow with their databases and existing JDBC drivers.
### Seamless AWS Service Integration
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does it make sense to specify authentication services? i.e. Seamless AWS Authentication Service Integration

The AWS JDBC Driver has been optimized for such fast failover when working with AWS RDS Multi-AZ DB Clusters.
The plugin-based design ensures applications only load the functionality they need, reducing dependencies and overhead.

## Benefits for Aurora PostgreSQL, Aurora MySQL, and RDS
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Personally this heading sounds like we are going to talk about benefits of using Aurora databases instead of benefits of the wrapper. What do you think of changing this and the previous heading from

## Benefits of the AWS JDBC Driver
## Benefits for Aurora PostgreSQL, Aurora MySQL, and RDS

to

## Benefits of the AWS JDBC Driver for All Aurora and RDS Database Services
## Benefits of the AWS JDBC Driver for Aurora PostgreSQL, Aurora MySQL, and RDS


| Parameter | Value | Required | Description | Example Value |
|-------------------|:-------:|:--------:|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------|
| `iamHost` | String | No | This property will override the default hostname that is used to generate the IAM token. The default hostname is derived from the connection string. | `cluster-identifier.dsql.us-east-1.on.aws` |
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Based on the conversation above where IP and Custom Endpoints are not accepted during connection, does it make sense to mention iamHost in the docs right now?

|-------------------|:-------:|:--------:|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------|
| `iamHost` | String | No | This property will override the default hostname that is used to generate the IAM token. The default hostname is derived from the connection string. | `cluster-identifier.dsql.us-east-1.on.aws` |
| `iamRegion` | String | No | This property will override the default region that is used to generate the IAM token. The default region is parsed from the connection string where possible. Some connection string formats may not be supported, and the `iamRegion` must be provided in these cases. | `us-east-2` |
| `iamExpiration` | Integer | No | This property determines how long an IAM token is kept in the driver cache before a new one is generated. The default expiration time is set to be 14 minutes and 30 seconds. Note that IAM database authentication tokens have a lifetime of 15 minutes. | `600` |
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this accurate given DSQL allows you to set server sided token lifetime


// This file shows how to establish an Aurora DSQL connection using HikariCP datasource and the Aurora DSQL IAM
// authentication plugin.
public class AwsAuroraDsqlIamAuthenticationDatasourceExample {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What do you think of creating a new submodule for DSQL sample codes to reduce noise for DSQL customers

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants