Search code examples
amazon-web-servicesspring-boothikaricpamazon-aurora

Connecting to AWS Aurora Serverless with Spring Boot


Trying to connect a Spring Boot container to an Aurora Serverless database. Here's what works:

  • Connecting the container to a provisioned Aurora database
  • Connecting to the serverless database from my computer via psql

However, when I configure the database connection parameters for the serverless database and start the container, I get the following error:

    org.postgresql.util.PSQLException: The connection attempt failed.
    at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:315) ~[postgresql-42.2.16.jar!/:42.2.16]
    at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:51) ~[postgresql-42.2.16.jar!/:42.2.16]
    at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:225) ~[postgresql-42.2.16.jar!/:42.2.16]
    at org.postgresql.Driver.makeConnection(Driver.java:465) ~[postgresql-42.2.16.jar!/:42.2.16]
    at org.postgresql.Driver.connect(Driver.java:264) ~[postgresql-42.2.16.jar!/:42.2.16]
    at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:138) ~[HikariCP-3.4.5.jar!/:na]
    at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:358) ~[HikariCP-3.4.5.jar!/:na]
    ...
    Caused by: java.io.EOFException: null
    at org.postgresql.core.PGStream.receiveChar(PGStream.java:443) ~[postgresql-42.2.16.jar!/:42.2.16]
    at org.postgresql.core.v3.ConnectionFactoryImpl.enableGSSEncrypted(ConnectionFactoryImpl.java:436) ~[postgresql-42.2.16.jar!/:42.2.16]
    at org.postgresql.core.v3.ConnectionFactoryImpl.tryConnect(ConnectionFactoryImpl.java:144) ~[postgresql-42.2.16.jar!/:42.2.16]
    at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:213) ~[postgresql-42.2.16.jar!/:42.2.16]
    ... 37 common frames omitted

Here's what I've tried (per this post):

  • Adjusting the Hikari connection parameters (does not seem to do anything):
    spring.datasource.hikari.minimum-idle=0
    spring.datasource.hikari.maximum-pool-size=10
    spring.datasource.hikari.connection-timeout=60000
    spring.datasource.hikari.max-lifetime=90000
    spring.datasource.hikari.idle-timeout=90000
  • Lazy bean initialization (seems to reduce the amount of time before the connection times out):
    spring.main.lazy-initialization=true

My computer is a WorkSpace in a peering VPC, so the VPC shouldn't be an issue. Additionally, I'm having the same problem when I boot the container in an ECS cluster within the VPC. Any help would be appreciated - I've been researching this for weeks.


Solution

  • I made it work adding ?gssEncMode=disable to the jdbc url.

    ex: jdbc:postgresql://dev-aurora-postgres-serverless.cluster-xxxxxxx.eu-central-1.rds.amazonaws.com:5432/my_db?gssEncMode=disable