AWS Certified Solutions Architect – Professional — Question 970
A company has a media metadata extraction pipeline running on AWS. Notifications containing a reference to a file in Amazon S3 are sent to an Amazon Simple
Notification Service (Amazon SNS) topic. The pipeline consists of a number of AWS Lambda functions that are subscribed to the SNS topic. The Lambda functions extract the S3 tile and write metadata to an Amazon RDS PostgreSQL DB instance.
Users report that updates to the metadata are sometimes slow to appear or are lost. During these times, the CPU utilization on the database is high and the number of failed Lambda invocations increases.
Which combination of actions should a solutions architect take to help resolve this issue? (Choose two.)
Answer options
- A. Enable message delivery status on the SNS topic. Configure the SNS topic delivery policy to enable retries with exponential backoff.
- B. Create an Amazon Simple Queue Service (Amazon SQS) FIFO queue and subscribe the queue to the SNS topic. Configure the Lambda functions to consume messages from the SQS queue.
- C. Create an RDS proxy for the RDS instance. Update the Lambda functions to connect to the RDS instance using the proxy.
- D. Enable the RDS Data API for the RDS instance. Update the Lambda functions to connect to the RDS instance using the Data API.
- E. Create an Amazon Simple Queue Service (Amazon SQS) standard queue for each Lambda function and subscribe the queues to the SNS topic. Configure the Lambda functions to consume messages from their respective SQS queue.
Correct answer: C, E
Explanation
Implementing an RDS Proxy (Option C) allows connection pooling, which prevents the spike in concurrent AWS Lambda executions from overwhelming the Amazon RDS PostgreSQL database with connection requests. Introducing Amazon SQS standard queues between the SNS topic and each Lambda function (Option E) buffers incoming messages, controlling the rate at which Lambda functions execute and write to the database. Together, these steps decouple the ingestion pipeline and manage database load effectively, resolving performance bottlenecks and failed invocations.