Jeff’s Note #
Unlike generic exam dumps, ADH analyzes this scenario through the lens of a Real-World Lead Developer.
For DVA-C02 candidates, the confusion often lies in how to efficiently route events across multiple Lambda consumers without digging into complex filtering logic inside each function or creating heavy operational overhead. In production, this is about knowing exactly which AWS event routing services provide native filtering and minimal integration effort while maintaining scalability. Let’s drill down.
The Certification Drill (Simulated Question) #
Scenario #
DataWave Solutions is developing an event-driven data processing system on AWS. There is a main Lambda function that processes incoming data streams and must route the processed data selectively to a specific subset of four downstream consumer Lambda functions. The routing decision depends solely on the value of one particular field in the processed data’s JSON payload. The engineering team wants to implement this functionality while minimizing operational complexity and overhead during maintenance and scaling.
The Requirement: #
Design a solution that routes processed events from the main Lambda function to only the appropriate set of four consumer Lambda functions, based on one data field, with the least operational overhead.
The Options #
- A) Create an Amazon Simple Queue Service (Amazon SQS) queue and event source mapping for each consumer Lambda function. Add message routing logic inside the data-processing Lambda function to send messages to the appropriate queues.
- B) Create an Amazon Simple Notification Service (Amazon SNS) topic. Subscribe the four consumer Lambda functions to the topic. Add message filtering logic inside each consumer Lambda function to discard unwanted messages. Subscribe the data-processing Lambda function to the SNS topic.
- C) Create a separate Amazon SNS topic and subscription for each consumer Lambda function. Add routing logic to the data-processing Lambda function to publish messages to the correct topic.
- D) Create a single Amazon SNS topic. Subscribe the four consumer Lambda functions to the topic. Use SNS subscription filter policies on each subscription to selectively send messages to the right consumer Lambda functions. Configure the data-processing Lambda function to publish to this single SNS topic.
Google adsense #
leave a comment:
Correct Answer #
D
Quick Insight: The Developer Imperative #
- SNS Topic with Subscription Filter Policies enables native message attribute-based filtering on the service side, avoiding the need to implement routing inside Lambdas or manage multiple topics.
- Using subscription filter policies minimizes operational overhead because the filtering happens inside SNS, not requiring consumers to handle unwanted events or adding complexity to the publisher.
- This pattern reduces Lambda contention, promotes scalability, and results in cleaner decoupling.
Content Locked: The Expert Analysis #
You’ve identified the answer. But do you know the implementation details that separate a Junior from a Senior?
The Expert’s Analysis #
Correct Answer #
Option D
The Winning Logic #
This solution leverages Amazon SNS’s native subscription filter policies, allowing the publisher Lambda to send all messages to a single SNS topic enriched with message attributes. SNS then handles filtering internally by delivering messages only to consumer Lambda functions whose subscription filters match the message attributes.
- For DVA candidates, this means no extra routing logic is needed in the publisher Lambda, reducing API complexity and code maintenance.
- Consumers receive only relevant messages with no additional filtering logic or wasted invocation.
- Operational overhead is minimized since you maintain just one topic and use SNS’s built-in filter capabilities.
The Trap (Distractor Analysis) #
-
Why not A?
Using multiple SQS queues requires the publisher Lambda to implement explicit routing logic and manage multiple queues plus event source mappings. It increases operational overhead and complexity, against the requirement to minimize this. -
Why not B?
Having one SNS topic but forcing every consumer Lambda to filter messages in code wastes compute and complicates consumer logic. It defeats the benefit of SNS native filtering and adds extra processing during execution. -
Why not C?
Creating multiple SNS topics shifts the routing responsibility back to the publisher Lambda. It increases the number of topics to maintain and complicates the system architecture, increasing operational overhead.
The Technical Blueprint #
For Developer / SysOps (Code/CLI Snippet): #
Below is a snippet to create an SNS subscription with a filter policy via AWS CLI:
aws sns subscribe \
--topic-arn arn:aws:sns:us-east-1:123456789012:MainTopic \
--protocol lambda \
--notification-endpoint arn:aws:lambda:us-east-1:123456789012:function:ConsumerLambda1 \
--attributes FilterPolicy='{"dataField": ["value1", "value2"]}'
This attaches a filter on the dataField message attribute, only invoking ConsumerLambda1 when messages contain those attribute values.
The Comparative Analysis #
| Option | API Complexity | Performance | Use Case / Comments |
|---|---|---|---|
| A | High (multiple SQS queues, mappings) | Moderate (SQS latency, multiple queues) | Explicit routing in publisher; high maintenance |
| B | Low (single SNS topic) | Low (consumers filter messages) | Inefficient; consumers must discard messages |
| C | Moderate (multiple SNS topics) | Moderate | Puts routing complexity in publisher Lambda |
| D | Low (single SNS + subscription filters) | High (native SNS filtering) | Optimal: minimal operational overhead, scalable |
Real-World Application (Practitioner Insight) #
Exam Rule #
“For the exam, always choose SNS subscription filter policies when you see event-driven Lambda routing based on message attributes.”
Real World #
“In production, this approach reduces costs by minimizing unnecessary Lambda invocations and simplifies debugging, since the routing happens transparently inside SNS.”
(CTA) Stop Guessing, Start Mastering #
Disclaimer
This is a study note based on simulated scenarios for the AWS DVA-C02 exam.