quarkus-amazon-services icon indicating copy to clipboard operation
quarkus-amazon-services copied to clipboard

Add AWS JDBC Wrapper Driver Support for Aurora Postgres/MSSQL with Hibernate ORM

Open rorychatterton opened this issue 2 years ago • 2 comments

This issue is a request to provide wrapper to Mysql & Postgres data sources to use the AWS JDBC Wrapper Driver.

Why?

The JDBC Wrapper driver provides additional support for connectivity to AWS Aurora hosted databases with features like:

  • Cluster Failover
  • AWS Secrets Manager Credential Management for database
  • IAM Authentication Token authentication for database
  • Failover Monitoring

Approach

I imagine this would be a case of adding an additional wrapper around the existing Postgres and MySQL.

We might then consume the uplifted driver like:

Postgres ~implementation("io.quarkus", "quarkus-jdbc-postgresql")~ implementation("io.quarkiverse.amazonservices", "quarkus-jdbc-postgresql-aurora")

MySQL ~implementation("io.quarkus", "quarkus-jdbc-mysql")~ implementation("io.quarkiverse.amazonservices", "quarkus-jdbc-mysql-aurora")

Plugin Parameters

A number of options are exposed using AWS JDBCDriver Parameters (normally injected into the data source on creation).

These could be exposed as properties to be configurable by the end consumer to enable/disable specific features and plugins

Other

The Hibernate ORM documentation warns against defining a custom ORM datasource as it is likely to fail the GraalVM build.

I am not super confident in my graalvm knowledge, but do believe this would be useful for the community.

rorychatterton avatar Apr 01 '24 02:04 rorychatterton

I believe this falls somewhat outside the scope of this project, which primarily focuses on providing support for the AWS SDK. I guess the JDBC driver deserves a new Quarkiverse project by its own.

Thought, it appears to leverage the AWS SDK internally (at least for RDS, STS, and AUTH). STS, is already supported with GraalVM substitution. We do have an open call for contributions regarding RDS. And AUTH could be added as necessary.

scrocquesel avatar Apr 01 '24 11:04 scrocquesel

I wasn't too sure whether it constituted its own extension or not, as I imagine it will end up being quite a small plugin.

If I manage to get a version of this working (Assuming RDS and Auth are also covered), would you be open to a pull request for this feature?

Otherwise I'll close the Issue, and if I get it working, investigate opening an extension.

rorychatterton avatar Apr 02 '24 06:04 rorychatterton

This issue is stale because it has been open 60 days with no activity. Remove stale label or comment or this will be closed in 14 days.

github-actions[bot] avatar Jun 02 '24 02:06 github-actions[bot]