Skip to main content

Cloud Resume Challenge — Phase 5: IaC, CI/CD & Smoke Testing

·2 min read

by Frank Doka

Article

Cloud Resume Challenge — Phase 5: IaC, CI/CD & Smoke Testing

Phase 5 replaces all the manually created resources with Terraform and builds a pipeline that deploys and validates automatically.

Terraform

I defined every backend resource in HCL:

  • Lambda function with packaged Python code, IAM execution role, and CloudWatch log group
  • API Gateway with REST routes, Lambda integration, CORS settings, and stage deployment
  • DynamoDB table with partition key and on-demand billing
  • S3 bucket for frontend static hosting
  • ACM certificate, CloudFront distribution, and Route 53 records

One terraform apply stands up the entire stack. One terraform destroy tears it down cleanly. No more console-created resources drifting from what's in code.

CI/CD Pipeline

The GitHub Actions workflow runs three stages:

  1. Build — Package the Lambda function code, install dependencies, and produce a deployment artifact.
  2. Deploy — Run terraform apply to create or update all AWS resources.
  3. Smoke test — Execute Cypress tests against the live API to confirm the counter works end-to-end.

If any stage fails, the pipeline stops and the commit is marked as failed.

Takeaways

The Cloud Resume Challenge forced me to work across the full stack — static hosting, serverless compute, databases, DNS, IaC, and CI/CD. The result is a production-grade system where every resource is defined in code, every change is deployed automatically, and every deploy is validated by tests.

More articles

CI/CD Pipeline for NGINX on Docker — Phase 3: Infrastructure with Terraform

Provisioning the AWS EC2 infrastructure with Terraform — instances, security groups, and outputs for Ansible dynamic inventory.

Read more

Text-to-Speech Serverless App — Phase 5: Infrastructure as Code with Terraform

Defining all backend resources in Terraform — Lambda functions, API Gateway, DynamoDB, S3, SNS, and Cognito — for reproducible deployments.

Read more