AWS Certified Solutions Architect – Associate (SAA-C02) — Question 574
A company has an event-driven application that invokes AWS Lambda functions up to 800 times each minute with varying runtimes. The Lambda functions access data that is stored in an Amazon Aurora MySQL DB cluster. The company is noticing connection timeouts as user activity increases. The database shows no signs of being overloaded. CPU, memory, and disk access metrics are all low.
Which solution will resolve this issue with the LEAST operational overhead?
Answer options
- A. Adjust the size of the Aurora MySQL nodes to handle more connections. Configure retry logic in the Lambda functions for attempts to connect to the database.
- B. Set up Amazon ElastiCache for Redis to cache commonly read items from the database. Configure the Lambda functions to connect to ElastiCache for reads.
- C. Add an Aurora Replica as a reader node. Configure the Lambda functions to connect to the reader endpoint of the DB cluster rather than to the writer endpoint.
- D. Use Amazon RDS Proxy to create a proxy. Set the DB cluster as the target database. Configure the Lambda functions to connect to the proxy rather than to the DB cluster.
Correct answer: D
Explanation
Amazon RDS Proxy is designed to handle highly concurrent, transient connections from serverless applications like AWS Lambda by pooling and sharing database connections. This prevents the database from exhausting its connection limits, resolving the connection timeouts without needing to scale the database nodes (Option A) or add replicas (Option C). Implementing caching with ElastiCache (Option B) requires significant application code changes and does not address connection overhead for writes, making RDS Proxy the solution with the lowest operational overhead.