AWS Cloud Portfolio

Boluwatife Abayomi

Final-year BSc Software Development student building production-grade AWS infrastructure — from static hosting to containerized microservices and Infrastructure as Code.

AWS Cloud Practitioner Certified
Istanbul Aydin University · 2026
github.com/TifeDiceeyy
4
Phases Done
20+
AWS Services
4
Live Endpoints
IaC
Terraform
Infrastructure Built
PHASE 01
Security & Static Hosting
IAM · S3 · CloudFront · Route 53 · ACM · GitHub Actions
Complete
IAM users, groups, roles, and least-privilege custom policies
S3 static hosting with React/Vite production build
CloudFront CDN with TLS 1.3, WAF, and cache invalidation
Custom domain via Route 53 + ACM SSL certificate
GitHub Actions CI/CD — auto-deploys on every git push to main
IAM Security Setup
Created dedicated IAM user (tife), group with least-privilege policies, IAM role for EC2 (no hardcoded credentials), and custom MindCampusS3Policy. Validated permissions with IAM Policy Simulator.
S3 + CloudFront + Custom Domain
React app hosted on S3 (mindcampus bucket), served via CloudFront (E12M3S7HE4MIN) with TLS 1.3, WAF, and custom domain mindcampus.space routed through Route 53 with ACM certificate.
GitHub Actions CI/CD Pipeline
Automated pipeline — every push to main triggers S3 sync and CloudFront cache invalidation. IAM user github-actions-deployer with scoped S3 permissions. Zero manual deploys ever needed.
S3CloudFrontRoute 53ACMIAMGitHub ActionsWAF
PHASE 02
Compute & Serverless API
EC2 · ALB · Auto Scaling · Lambda · API Gateway · DynamoDB · Cognito
Complete
EC2 web server with AMI, Launch Template, and UserData systemd auto-start
Application Load Balancer (mindcampus-alb) across 3 Availability Zones
Auto Scaling Group — min 1, desired 2, max 3 instances at 50% CPU
Lambda + API Gateway serverless REST API with 3 endpoints
DynamoDB NoSQL table (mindcampus-courses) for course data
Cognito JWT auth — POST /courses requires valid token, returns 401 without
EC2 + AMI + Launch Template + ALB + Auto Scaling
Node.js API on EC2 with systemd service for auto-start. AMI (ami-026978e1d9b76eace) for instant cloning. ALB distributes traffic across 3 AZs. ASG maintains 2 instances, scales to 3 on CPU spike. UserData script deploys app automatically — zero manual intervention on new instances.
Lambda + API Gateway + DynamoDB
Serverless REST API: GET /courses (list), GET /courses/{id} (single), POST /courses (create). Lambda reads/writes DynamoDB. Code deployed via CLI zip upload. API Gateway with Lambda Proxy Integration. Live at lx2i5gpnc9.execute-api.us-east-1.amazonaws.com/prod.
Cognito JWT Authentication
User Pool (us-east-1_6WcGxO6Jl) issues JWT tokens on login. API Gateway Cognito Authorizer validates tokens on every request. POST /courses returns 401 Unauthorized without valid token — proven via curl tests.
EC2ALBAuto ScalingAMILambdaAPI GatewayDynamoDBCognitoJWTsystemd
PHASE 03
Monitoring & Alerting
CloudWatch · SNS · Dashboards · Alarms
Complete
SNS topic (mindcampus-alerts) with confirmed email subscription
CloudWatch alarm — triggers email alert when Lambda errors exceed 1
CloudWatch dashboard with Lambda Invocations, Errors, and API Count widgets
SNS Topic + CloudWatch Alarm
SNS topic mindcampus-alerts with confirmed email subscription. CloudWatch alarm (mindcampus-lambda-errors) triggers email notification when Lambda error count exceeds 1 in any 60-second window. Production-grade incident detection.
CloudWatch Dashboard (mindcampus-dashboard)
3 widgets tracking Lambda Invocations, Lambda Errors, and API Gateway request Count. Provides real-time visibility into application health and traffic patterns across all services.
CloudWatchSNSAlarmsDashboards
PHASE 04
Containers & Infrastructure as Code
Docker · ECR · ECS Fargate · Terraform
Complete
Docker image built with node:18-alpine and pushed to ECR private registry
ECS Fargate cluster running containerized API — live and responding at port 3000
Terraform provisions DynamoDB, SNS, CloudWatch as code — 3 resources in 13 seconds
Docker + ECR + ECS Fargate
Node.js API containerized with node:18-alpine Dockerfile. Image pushed to ECR (402852608363.dkr.ecr.us-east-1.amazonaws.com/mindcampus-api:latest). ECS Fargate cluster (mindcampus-cluster) runs the container serverlessly — no EC2 to manage. Service auto-restarts on crash. Live at 44.201.9.130:3000.
Terraform Infrastructure as Code
main.tf provisions DynamoDB (mindcampus-courses-tf), SNS (mindcampus-alerts-tf), and CloudWatch alarm with ManagedBy=Terraform tags. terraform apply created all 3 resources in 13 seconds from a single command. Infrastructure is version-controlled and reproducible in any AWS account.
DockerECRECS FargateTerraformIaCnode:18-alpine
CV-Ready Bullet Points

Architected full-stack LMS on AWS — S3 + CloudFront + Route 53 with custom domain, TLS 1.3, WAF, and GitHub Actions CI/CD pipeline for zero-touch automated deployments

Built auto-scaling EC2 architecture with Application Load Balancer across 3 Availability Zones, automated via UserData scripts and systemd for zero-touch server deployment on instance launch

Developed serverless REST API using Lambda + API Gateway + DynamoDB with JWT authentication via AWS Cognito — protected routes returning 401 Unauthorized without valid token

Containerized Node.js API with Docker, pushed to ECR, and deployed on ECS Fargate — fully serverless container orchestration with zero EC2 instance management

Wrote Terraform IaC to provision DynamoDB, SNS, and CloudWatch — entire infrastructure reproducible from a single terraform apply command with consistent tagging strategy

Implemented production monitoring with CloudWatch dashboards and SNS email alerting for Lambda error spikes — end-to-end observability across EC2, Lambda, and API Gateway

Boluwatife Abayomi · mindcampus.space · github.com/TifeDiceeyy

AWS Account 402852608363 · us-east-1 · Updated March 2026