Study Guide865 words

Automating Deployment Testing in AWS

Automate deployment testing

Automating Deployment Testing in AWS

This guide focuses on Task 3: Automate deployment testing within the AWS Certified Developer - Associate (DVA-C02) curriculum. It covers the mechanisms for environment isolation, test event creation, and the integration of automated tests within CI/CD pipelines.

Learning Objectives

By the end of this module, you will be able to:

  • Generate and use JSON test events for Lambda and API Gateway.
  • Configure environments using Lambda aliases, container tags, and API Gateway stages.
  • Deploy Infrastructure as Code (IaC) templates using AWS SAM and CloudFormation to support automated testing.
  • Utilize Amazon Q Developer to accelerate the creation of unit and integration tests.
  • Differentiate between various deployment strategies like Blue/Green and Canary within an automated context.

Key Terms & Glossary

  • Lambda Alias: A pointer to a specific version of a Lambda function (e.g., PROD pointing to version 5).
  • Stage Variables: Name-value pairs used in API Gateway to change configuration based on the stage (e.g., lambdaAlias = "beta").
  • Infrastructure as Code (IaC): The process of managing and provisioning computer data centers through machine-readable definition files (e.g., CloudFormation).
  • JSON Payload: The data format used to simulate events (like an S3 upload or HTTP request) when testing serverless functions.
  • Amazon Q Developer: An AI-powered assistant that can generate test code and explain complex logic.

The "Big Idea"

[!IMPORTANT] The core goal of automated deployment testing is to shift-left: moving testing earlier in the development lifecycle. Instead of manual verification after a deploy, we use automation to ensure that code satisfies requirements before it ever reaches a production user. In AWS, this is achieved by treating infrastructure as code and using logical environment isolation (aliases and stages) to test in "production-like" settings.

Formula / Concept Box

FeaturePurpose in TestingCommon Practice
Lambda AliasesTraffic ShiftingPoint TEST alias to $LATEST and PROD to a stable version number.
API Gateway StagesEnvironment IsolationCreate v1, v2, dev, and prod stages to isolate traffic.
SAM TemplatesRepeatabilityUse sam deploy with different --parameter-overrides for Dev vs. Test.
Test EventsSimulationStore standard JSON payloads in a tests/ directory for local and cloud testing.

Hierarchical Outline

  1. Environment Isolation Strategies
    • Lambda Versioning: Immutable snapshots of code.
    • Lambda Aliases: Mutable pointers for canary deployments.
    • API Gateway Stages: Distinct URL endpoints for different lifecycle phases.
  2. Infrastructure as Code (IaC)
    • AWS SAM: Extension of CloudFormation for serverless; uses template.yaml.
    • Deployment Actions: Committing code triggers build and test in AWS CodePipeline.
  3. Test Event Generation
    • JSON Payloads: Simulating service-to-service triggers (S3, SNS, SQS).
    • Amazon Q Developer: Using AI to generate unit tests and mock data.

Visual Anchors

Automated CI/CD Pipeline Flow

Loading Diagram...

Lambda Alias Traffic Shifting

This diagram visualizes how an Alias can distribute traffic between two versions (Canary Testing).

\begin{tikzpicture} % Version 1 (Old) \draw[fill=blue!20] (0,0) rectangle (2,1) node[midway] {Version 1}; % Version 2 (New) \draw[fill=green!20] (4,0) rectangle (6,1) node[midway] {Version 2}; % Alias \draw[thick, rounded corners] (1.5, 2.5) rectangle (4.5, 3.5) node[midway] {Alias: "PROD"}; % Arrows \draw[->, >=stealth, thick] (2.5, 2.5) -- (1, 1) node[midway, left] {90%}; \draw[->, >=stealth, thick] (3.5, 2.5) -- (5, 1) node[midway, right] {10%}; \end{tikzpicture}

Definition-Example Pairs

  • Canary Deployment: A strategy where a small portion of traffic is sent to a new version to test stability.
    • Example: Deploying Lambda Version 2 and setting the "Prod" alias to send only 5% of traffic to Version 2 while monitoring for errors.
  • Integration Testing: Testing how different AWS services interact (e.g., API Gateway -> Lambda -> DynamoDB).
    • Example: Sending a JSON payload to an API Gateway stage that triggers a Lambda, then verifying the record appears in DynamoDB.
  • Mocking: Simulating a service response without calling the actual service.
    • Example: Using a local Mock API to simulate an external payment gateway during the build phase in CodeBuild.

Worked Examples

Example 1: Creating a Lambda Test Event

To test a Lambda function that processes S3 events, you must provide a JSON payload that mimics the structure S3 sends.

The Payload (s3-event.json):

json
{ "Records": [ { "s3": { "bucket": { "name": "my-test-bucket" }, "object": { "key": "test-image.jpg" } } } ] }

The Command (using AWS SAM):

bash
sam local invoke MyFunction -e s3-event.json

This allows developers to debug the function locally before deploying to AWS.

Example 2: API Gateway Stage Variables

Imagine you have two Lambda functions: MyFunc-Dev and MyFunc-Prod.

  1. Create a Stage Variable in API Gateway named lambdaAlias.
  2. Set the value to dev in the dev stage and prod in the prod stage.
  3. In the API Gateway integration request, set the Lambda ARN to: arn:aws:lambda:region:account-id:function:MyFunc:${stageVariables.lambdaAlias}

[!TIP] This allows the same API definition to point to different backends automatically based on the URL used.

Checkpoint Questions

  1. What is the primary difference between a Lambda Version and a Lambda Alias? (Answer: A version is immutable/static; an alias is a pointer that can be updated to point to different versions.)
  2. Which AWS service is best suited for orchestrating the transition of code from a repository through build, test, and deployment phases? (Answer: AWS CodePipeline.)
  3. How can you ensure that an AWS SAM template uses a specific environment's configuration (like a different DB name for testing)? (Answer: Use Template Parameters and Parameter Overrides during the sam deploy process.)
  4. If you want to perform a Blue/Green deployment on ECS, which service handles the traffic shifting? (Answer: AWS CodeDeploy.)
  5. What tool can a developer use to help write the actual test code logic more efficiently? (Answer: Amazon Q Developer.)

Ready to study AWS Certified Developer - Associate (DVA-C02)?

Practice tests, flashcards, and all study notes — free, no sign-up needed.

Start Studying — Free