Jeff’s Note #
Unlike generic exam dumps, ADH analyzes this scenario through the lens of a Real-World Lead Developer.
For AWS DVA-C02 candidates, the confusion often lies in how to implement safe Lambda function deployments that test a small subset of live traffic without manual intervention. In production, this is about knowing exactly how to configure deployment preferences with AWS SAM and use CodeDeploy hooks to efficiently test new versions before full rollouts. Let’s drill down.
The Certification Drill (Simulated Question) #
Scenario #
ByteRise Technologies is building a microservices backend composed of many AWS Lambda functions. The engineering team uses AWS Serverless Application Model (SAM) templates for infrastructure as code and wants to implement automated testing for Lambda deployments. Their goal is to shift a small percentage of live traffic to new Lambda versions during deployment to validate functionality before committing to full production rollout.
The Requirement #
Design a deployment process that enables progressive traffic shifting to new Lambda versions using AWS SAM, while automatically testing the new deployment with minimal operational effort.
The Options #
- A) Use AWS SAM CLI commands inside AWS CodeDeploy deployment lifecycle hooks to invoke the Lambda functions and validate the deployment.
- B) Declare EventInvokeConfig settings on the Lambda functions in the SAM templates with OnSuccess and OnFailure destinations.
- C) Enable gradual deployment preferences like Canary or Linear directly in AWS SAM templates.
- D) Set the deployment preference type to Canary10Percent30Minutes in the SAM template and use lifecycle hooks to run integration tests.
- E) Set the deployment preference type to Linear10PercentEvery10Minutes in the SAM template and use lifecycle hooks to run integration tests.
Google adsense #
leave a comment:
Correct Answer #
C) Enable gradual deployments through AWS SAM templates.
D) Set the deployment preference type to Canary10Percent30Minutes. Use hooks to test the deployment.
Quick Insight: The Developer Imperative #
The key here is leveraging AWS SAM deployment preferences that integrate natively with AWS CodeDeploy to orchestrate traffic shifting. Lifecycle hooks allow automated testing during deployment phases, ensuring only healthy versions proceed to full rollout — all with minimal manual intervention or custom scripting.
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 #
C and D
The Winning Logic #
- Option C is correct because AWS SAM supports defining deployment preferences (
DeploymentPreference) in the template, which enables gradual deployments using Canary or Linear types. This integrates with AWS CodeDeploy to shift live traffic incrementally without manual intervention. - Option D complements C by specifying a Canary deployment preference with 10% traffic for 30 minutes. This is ideal for quickly testing new versions on a small subset before full rollout.
- Using deployment lifecycle hooks allows automated invocation of tests at each deployment stage, preventing rote manual steps and reducing operational overhead.
- Together, they achieve the stated goal: automated, safe Lambda deployments that progressively shift live traffic and validate success before full release.
The Trap (Distractor Analysis) #
- Option A: While invoking Lambda functions via AWS SAM CLI in CodeDeploy hooks is plausible, the SAM CLI itself is a local development tool, not generally used inside CodeDeploy hooks in production. This adds unnecessary operational complexity.
- Option B:
EventInvokeConfigconfigures asynchronous invocation destinations (success/failure targets) but doesn’t control gradual deployment or traffic shifting. It’s useful for error handling, not phased rollout. - Option E: Linear deployment is valid, but Canary deployments offer quicker rapid rollback capabilities. The question’s best practice favors Canary for limited traffic testing with defined intervals.
The Technical Blueprint #
# Example snippet of SAM template deployment preference and hooks:
Resources:
MyLambdaFunction:
Type: AWS::Serverless::Function
Properties:
Handler: index.handler
Runtime: nodejs14.x
...
DeploymentPreference:
Type: Canary10Percent30Minutes
Hooks:
PreTraffic: !Ref PreTrafficTestFunction
PostTraffic: !Ref PostTrafficValidationFunction
The Comparative Analysis #
| Option | API Complexity | Performance Impact | Use Case |
|---|---|---|---|
| A | High (using SAM CLI in CodeDeploy hooks) | Manual and error-prone; operational overhead | Testing, but inefficient for CI/CD |
| B | Medium (EventInvokeConfig setup) | No traffic shifting, only async error handling | Handling async invocations, not deployment validation |
| C | Low (native SAM declaration) | Efficient gradual rollout via CodeDeploy | Recommended for automated progressive deployments |
| D | Low (standard SAM Canary preference) | Fast validation on 10% traffic for 30 minutes | Most operationally efficient and safe rollout method |
| E | Low (SAM Linear preference) | Slower rollout with small increments | Valid but less preferred than Canary for quick testing |
Real-World Application (Practitioner Insight) #
Exam Rule #
“For the exam, always use AWS SAM Deployment Preferences when you see a Lambda gradual deployment or traffic shifting requirement.”
Real World #
“In production, adopting Canary deployments is generally preferred for rapid validation with minimal user impact. Linear can be chosen for larger, more cautious rollouts but takes longer.”
(CTA) Stop Guessing, Start Mastering #
Disclaimer
This is a study note based on simulated scenarios for the AWS DVA-C02 exam.