Hands-on labs for building practical skills across Cloud Engineering, Infrastructure Engineering, and Platform Engineering.
This repository documents a progressive journey from focused scripts to reproducible, observable, and cost-aware cloud environments and systems. Python remains an important part of that journey: it is used for automation, auditing, validation, and operational tooling, but as one tool within a broader cloud engineering stack that also includes infrastructure as code, containers, CI/CD, networking, security, and observability.
Stages 1 and 2 contain the Python and boto3 foundations. Stage 3 has started with the first Terraform networking lab; Stages 4 through 8 remain planned directions.
cloud-engineering-labs/
├── stage_1/
│ ├── aws_naming/
│ ├── ec2-audit/
│ ├── ec2-cost-report/
│ ├── ec2-tag-audit/
│ ├── env_inspector/
│ ├── error_handler/
│ └── file-io/
├── stage_2/
│ ├── boto3_setup/
│ ├── ec2_manager/
│ ├── iam_automation/
│ ├── s3_automation/
│ ├── secret_manager/
│ ├── security_groups/
│ ├── tagging_cleanup/
│ └── utils/
├── stage_3/
│ └── terraform-aws-networking-lab/
├── requirements.txt
└── README.md
Stage 1 establishes Python foundations through cloud and infrastructure scenarios. The labs use simulated infrastructure data and local utilities to practice automation patterns before interacting with live cloud resources.
| Project | Focus |
|---|---|
aws_naming |
Standardized AWS resource names, ARN construction, and input validation |
ec2-audit |
EC2 inventory simulation, state counts, and missing-tag detection |
ec2-cost-report |
EC2 cost calculation and formatted status reporting |
ec2-tag-audit |
Infrastructure metadata inspection and tag compliance auditing |
env_inspector |
Environment variables, reusable utilities, structured logging, and JSON output |
error_handler |
Input validation and handling of simulated AWS API failures |
file-io |
JSON configuration, EC2 data filtering, and report generation |
Stage 2 moves from simulated data to AWS API interactions with boto3. These labs cover resource lifecycle operations, security checks, governance, shared tooling, and cleanup practices. Some scripts can create, modify, or delete AWS resources and should be reviewed before use in a live account.
| Project | Focus |
|---|---|
boto3_setup |
AWS credential and connectivity verification through STS |
ec2_manager |
EC2 lifecycle management, state filtering, and instance auditing |
iam_automation |
IAM user and policy creation, attachment, detachment, and cleanup |
s3_automation |
S3 bucket and object operations, bucket policies, and lifecycle rules |
secret_manager |
AWS Secrets Manager create, retrieve, update, and delete workflows |
security_groups |
Inbound-rule auditing, open CIDR detection, and sensitive-port checks |
tagging_cleanup |
EC2 tag compliance and cleanup of long-stopped development instances |
utils |
Shared EC2 helpers and centralized logging configuration |
Stage 2 is now considered complete. See the Stage 2 completion summary for its scope, safety profile, focused unit-test command, and transition to declarative infrastructure.
Stage 3 begins the move from imperative API automation to declarative, reviewable, and reproducible infrastructure.
| Project | Focus |
|---|---|
terraform-aws-networking-lab |
VPC, public subnet, Internet Gateway, routing, minimal Security Group, EC2, standardized tags, outputs, and destroy workflow |
- Python 3 and virtual environments
- AWS and
boto3 - Automation and operational tooling
- Resource lifecycle and cost awareness
- Infrastructure auditing, tagging, and governance
- IAM, secrets, networking security, and least-privilege concepts
- Logging, exception handling, type hints, and input validation
- Git and GitHub workflows
The following stages are planned labs. Their tools and infrastructure are not yet included in this repository.
- Docker and Docker Compose
- Containerized FastAPI service
- Reverse proxy, HTTPS, and health checks
- Reproducible deployment to a VPS
- GitHub Actions
- Linting, tests, and Docker image builds
- Deployment pipelines
- Structured logs
- Prometheus
- Grafana
- Loki
- OpenTelemetry
- Lambda
- API Gateway
- EventBridge
- SQS and SNS
- Public and private subnets
- Load Balancer and Auto Scaling
- Managed databases
- High availability
- Security, resilience, and cost trade-offs
- Extend Terraform practices with remote state and modular composition
- Dockerized FastAPI service with Prometheus and Grafana
- GitHub Actions CI pipeline
The goal of this repository is to build and demonstrate practical cloud engineering judgment: automating repeatable work, designing infrastructure that can be reproduced and operated, adding visibility into system behavior, and understanding the security, resilience, and cost trade-offs behind technical decisions.