From DynamoDB Limitations to PostgreSQL Innovation: How I Built AuroraWire



This content originally appeared on DEV Community and was authored by Bhoobalan B R

Opensource

The DynamoDB Days: When Scale Meets Reality!

Picture this: You’re building the next big thing, and naturally, you reach for DynamoDB. After all, it’s AWS’s NoSQL database, yep! scalable, managed, and serverless.

What could go wrong?
Everything was smooth sailing until I hit the Global Secondary Index (GSI) wall.

For those who haven’t experienced this particular form of database pain, imagine having a massive dataset but being told you can only ask very specific questions about it. Need a flexible string search? Sorry, DynamoDB doesn’t do “LIKE” queries. Want to search across multiple fields? Better hope you designed your GSI structure previously.

I found myself writing increasingly complex application logic just to work around DynamoDB’s limitations. The “scalable” database was scaling my temper too.

The PostgreSQL Promise (With a Security Problem)

Fed up with NoSQL limitations, I decided to migrate to Aurora Serverless v2 with PostgreSQL. Finally! A real database with real queries, joins, and that magical ability to search strings without architectural.

But then reality hit: How do you actually connect to this thing securely?
The obvious solution everyone suggests is making your RDS instance publicly accessible. But as someone who’s seen enough security incidents, the thought of having a connection string like

postgresql://user:password@my-database.amazonaws.com:5432/mydb

floating around the internet made my security-conscious, one can throw billion hits on me. (yes, peoples do for sell data)

The “proper” enterprise solution? Bastion hosts, VPN connections, and a maze of networking complexity that requires a PhD in AWS VPC and need Matt Lehwess to design thru.

The Data API Discovery:

That’s when I discovered AWS RDS Data API – a RESTful interface to your Aurora Serverless cluster. No connection strings, no public endpoints, just secure HTTPS calls with IAM authentication. Perfect!
Except for one tiny problem: No one actually wants to write raw HTTP requests to query their database.

The “What If” Moment

Late one evening, staring at my pgAdmin interface (which was obviously not working with Data API), I had one of those dangerous developer thoughts:

“What if I could make pgAdmin think it’s talking to a regular PostgreSQL server, but secretly translate everything to Data API calls?”

This was either brilliant or dump idea. Probably both.

The Architecture That Makes It Work

Here’s what actually happens when you connect:

pgAdmin → AuroraWire (localhost:5432) → AWS Data API → Aurora Serverless v2

pgAdmin connects to what it thinks is a PostgreSQL server
AuroraWire intercepts the binary protocol messages
SQL queries get translated to Data API JSON calls
Results come back from Aurora and get converted to PostgreSQL format
pgAdmin displays data like nothing unusual happened

The beauty? Your database never needs a public endpoint. No bastion hosts, no VPN complexity, no security compromises.

Beyond Personal Use: The Open Source Decision

Initially, this was just a hack to solve my own connectivity problems. But after using it for several months and realizing how much infrastructure complexity it eliminated, I knew this needed to be shared.
The use cases kept expanding:

  • Development teams wanting local access to production-like Aurora environments
  • Enterprise organizations with strict security requirements
  • Anyone running Aurora Serverless who was tired of networking challenges

The Bigger Picture

AuroraWire represents more than just a database proxy. It’s an example of how modern cloud services can be made more accessible without sacrificing security. By bridging the gap between traditional tooling and serverless architecture, we can have the best of both worlds in metaphor visions.

Try It Yourself

If you’re struggling with Aurora Serverless connectivity, dealing with bastion host complexity, or just curious about PostgreSQL wire protocol translation, give AuroraWire a try:
GitHub: https://github.com/bhoobalan-bhoo/aws-aurora-wire-proxy
Product Hunt: https://www.producthunt.com/products/aurorawire
More about: https://bhoobalan-bhoo.github.io/aurora-wire.html

Thanks for your read!
Any Thoughts?


This content originally appeared on DEV Community and was authored by Bhoobalan B R