How to store failed Lambda asynchronous invocations with least overhead?

A developer has an application that asynchronously invokes an AWS Lambda function. The developer wants to store messages that resulted in failed invocations of the Lambda function so that the application can retry the call later. What should the developer do to accomplish this goal with the LEAST operational overhead?

  1. Set up Amazon CloudWatch Logs log groups to filter and store the messages in an Amazon S3 bucket. Import the messages in Lambda. Run the Lambda function again.
  2. Configure Amazon EventBridge to send the messages to Amazon Simple Notification Service (Amazon SNS) to initiate the Lambda function again.
  3. Implement a dead-letter queue for discarded messages. Set the dead-letter queue as an event source for the Lambda function. Source Reference Answer
  4. Send Amazon EventBridge events to an Amazon Simple Queue Service (Amazon SQS) queue. Configure the Lambda function to pull messages from the SQS queue. Run the Lambda function again.

Community Votes

C
100%

100% of anonymous learners picked answer C. Votes are pick records left by other test-takers — they are not the verified answer.

Community Insight

The exam tests the built-in Lambda asynchronous invocation DLQ feature; the trap is choosing a manual SQS/EventBridge architecture when Lambda already provides a native dead-letter configuration.

For failed asynchronous Lambda invocations, AWS recommends using a Lambda dead-letter queue (DLQ) to capture discarded events. This approach minimizes operational overhead compared to manually wiring CloudWatch filters or custom SQS event sources.

Option D is the most tempting wrong answer because it uses SQS directly, but for asynchronous Lambda invocations you can configure a DLQ directly on the Lambda function and attach it as an event source, requiring less custom code and overhead.

Community Discussion (4 comments)

DeaconStJohn 👍 5 Selected: C
Async allows DLQ to be created from lambda function Sync requires DLQ to be created by SQS.
65703c1 👍 1 Selected: C
C is the correct answer.
seetpt 👍 2 Selected: C
C is correct
KarBiswa 👍 2 Selected: C
https://docs.aws.amazon.com/lambda/latest/dg/invocation-async.html#invocation-dlq

Comments & Corrections

No comments yet — spotted an error or have a note? Share it below.

Log in to comment, report an error, or add a note about this question.

Submitted for moderation before publishing. Keep it helpful and respectful.

Expert Analysis

Why the Answer Is Correct

Option C is correct because AWS Lambda natively supports configuring a dead-letter queue (DLQ) for asynchronous invocations. When Lambda exhausts retries, the failed event is sent to the specified SQS queue or SNS topic. This is a built-in feature, so there is no need to build custom filtering or routing logic, keeping operational overhead low.

Using the DLQ as an event source for the Lambda function makes it easy to retry the failed messages later. The SQS queue holds the discarded events, and when it is configured as an event source, Lambda can process those messages again automatically. This matches the goal of storing failed messages and retrying them with minimal manual intervention.

Community comments reinforce this point. One comment notes that async Lambda invocations allow a DLQ to be created from the Lambda function, while sync invocations require the DLQ to be created by SQS. Another comment provides the official AWS documentation link, confirming that the DLQ is the standard solution for this scenario.

Why the Other Options Are Wrong

Option A is wrong because setting up CloudWatch Logs log groups, filtering, and then importing messages into Lambda is not a native dead-letter mechanism. It requires custom code and extra moving parts, which increases operational overhead significantly.

Option B is wrong because EventBridge sending messages to SNS to initiate Lambda again does not provide a durable dead-letter store with native retry semantics. SNS is a push notification service, not a queue designed for holding failed events for later replay.

Option D is wrong because while SQS can store failed messages and trigger Lambda, it is not the least operational overhead approach for asynchronous Lambda invocations. Lambda already offers a built-in DLQ feature that sends failed events directly to SQS or SNS without requiring the developer to design a separate EventBridge/SQS integration.

Community Comment Notes

Community members overwhelmingly voted for C, with 100% of the votes agreeing. A high-liked comment clarifies the key difference: for async invocations, Lambda can create the DLQ; for sync invocations, SQS must create it. This distinction is a common exam point.

Another comment includes the official AWS documentation link for Lambda async invocation DLQs, reinforcing that the feature is designed exactly for this use case. The comments do not suggest any hidden trap or alternative answer, so C is confident.

Official Reference

Exam Strategy

When you see 'least operational overhead' for Lambda async failures, look for the built-in dead-letter queue configuration. Remember: for async invocations, the DLQ is set on the Lambda function; for sync invocations, it must be handled by the caller or SQS.

Related Analysis

Practice All DVA-C02 Questions

Access 100 questions with complete answers and detailed explanations.

View Full DVA-C02 Practice Test →

← Back to DVA-C02 Study Guide