Amazon RDS Proxy
Amazon RDS Proxy is a fully managed, highly available database proxy for Amazon Relational Database Service (RDS) that makes applications more scalable, more resilient to database failures, and more secure.
Many applications, including those built on modern serverless architectures, can have a large number of open connections to the database server and may open and close database connections at a high rate, exhausting database memory and compute resources. Amazon RDS Proxy allows applications to pool and share connections established with the database, improving database efficiency and application scalability. With RDS Proxy, failover times for Aurora and RDS databases are reduced by up to 66% and database credentials, authentication, and access can be managed through integration with AWS Secrets Manager and AWS Identity and Access Management (IAM).
Amazon RDS Proxy can be enabled for most applications with no code changes. You don’t need to provision or manage any additional infrastructure to start using RDS Proxy. Pricing is simple and based on the capacity of underlying database instances. You pay per Aurora Capacity Unit (ACU) for Amazon Aurora Serverless v2 instances or per vCPU for provisioned instances. Amazon RDS Proxy is available for Amazon Aurora with MySQL compatibility, Amazon Aurora with PostgreSQL compatibility, Amazon RDS for MariaDB, Amazon RDS for MySQL, and Amazon RDS for PostgreSQL.
Improved application performance
Your Amazon RDS Proxy instance maintains a pool of established connections to your RDS database instances, reducing the stress on database compute and memory resources that typically occurs when new connections are established. RDS Proxy also shares infrequently used database connections, so that fewer connections access the RDS database. This connection pooling enables your database to efficiently support a large number and frequency of application connections so that your application can scale without compromising performance.
Increase application availability
RDS Proxy minimizes application disruption from outages affecting the availability of your database by automatically connecting to a new database instance while preserving application connections. When failovers occur, RDS Proxy routes requests directly to the new database instance. This reduces failover times for Aurora and RDS databases by up to 66%.
Manage application security
Amazon RDS Proxy gives you additional control over data security by giving you the choice to enforce IAM authentication for database access and avoid hard coding database credentials into application code. RDS Proxy also enables you to centrally manage database credentials using AWS Secrets Manager.
A database proxy server helps handle additional load on your database. While traditional proxy servers allow applications to scale more effectively, they are difficult to deploy, patch, and manage – consuming time and energy that could be better spent on developing great products. Amazon RDS Proxy gives you the benefits of a database proxy without requiring additional burden of patching and managing your own proxy server. RDS Proxy is completely serverless and scales automatically to accommodate your workload.
Fully compatible with your database
Amazon RDS Proxy is fully compatible with the protocols of supported database engines, so you can deploy RDS Proxy for your application without making changes to your application code. You simply point your application connections to the proxy instead of the RDS database, and the rest is managed seamlessly.
Available and durable
Amazon RDS Proxy is highly available and deployed over multiple Availability Zones (AZs) to protect you from infrastructure failure. Each AZ runs on its own physically distinct, independent infrastructure and is engineered to be highly reliable. In the unlikely event of an infrastructure failure, the RDS Proxy endpoint remains online and consistent allowing your application to continue to run database operations.
How it works
Amazon RDS Proxy sits between your application and your relational database to efficiently manage connections to the database and improve scalability of the application.
Serverless application development
With Amazon RDS Proxy you can build serverless applications that are more scalable and more available because they use your relational databases more efficiently. Modern serverless applications support highly variable workloads and may attempt to open a burst of new database connections or keep many connections open but idle. A surge of connections or a large number of open connections could strain your database server, leading to slower queries and limited application scalability. By pooling and sharing already established database connections, RDS Proxy allows you to efficiently scale to many more connections from your serverless application. RDS Proxy also enables you to maintain predictable database performance by controlling the total number of database connections that are opened. Finally, RDS Proxy preserves the availability of your serverless application by denying unserviceable application connections that may degrade the performance of your database.
Software-as-a-Service (SaaS) and eCommerce applications
SaaS or eCommerce applications often keep a large number of database connections open to ensure quick user response times, although only a fraction of these open connections may get actively used at a given moment. These open but idle connections still consume database memory and compute resources. Instead of over-provisioning your database to support mostly idling connections, you can use RDS Proxy to hold idling connections from your application while only establishing database connections as required to optimally serve active requests.
"We are continuously on the lookout to optimize and improve performance and scalability for our customers. Since Drupal does not natively support connection pooling, we wanted a solution that would allow us to better scale our application’s connections on relational databases. RDS Proxy fits the bill perfectly! With RDS Proxy, our customer's Drupal applications are able to easily utilize a ready pool of established connections. This has allowed us to both better manage sudden surges in website traffic and improve the efficiency of our databases."
Ed Brennan, Chief Architect - Acquia
"We have a serverless API infrastructure based on AWS Lambda, which is expected to support tens of thousands of users and requires a scalable backend data store. While we have traditionally relied on NoSQL databases for such scenarios, the challenge in this situation was that we needed strong SQL querying capabilities to manage and access the data provided by Amazon RDS and Amazon Aurora databases. We can now address this challenge with RDS Proxy in front of our RDS and Aurora databases. In our testing, we observed 4X improvement in response times with RDS Proxy at peak loads. RDS Proxy is beneficial for us since we can use familiar SQL statements with our relational databases and all we needed to do was to simply switch the endpoint."
Masahiro Arai, Digital Strategy Division - CAINZ
“We recently migrated our MySQL databases to Amazon Aurora. Our applications keep a large number of database connections open, putting stress on our database during connection surges, causing outages for our customers. Upon migrating to Amazon Aurora, RDS Proxy became a critical piece of our architecture to scale our application and optimize costs. Using RDS Proxy, our applications could open far more connections to the proxy, which in turn reduced database connections by up to 90 percent during peak hours, insulating the database from high connection counts. RDS Proxy not only helped improve our system stability, but it also helped reduce our costs. With less system resources going to database connections, we could consolidate our databases into fewer Amazon Aurora clusters, lowering our total operating costs.”
Peter Fein, Senior Software Architect - CloudHealth by VMware
Get started with Amazon RDS Proxy
You can get started with Amazon RDS Proxy in just a few clicks by going to the Amazon RDS or AWS Lambda console and creating an Amazon RDS Proxy endpoint for your RDS databases. You can then point your application to the Amazon RDS Proxy endpoint.