iam-veeramalla/aws-devops-zero-to-hero
AWS zero to hero repo for devops engineers to learn AWS in 30 Days. This repo includes projects, presentations, interview questions and real time examples.
Slowing — last commit 10mo ago
weakest axistop contributor handles 96% of recent commits; no tests detected…
Has a license, tests, and CI — clean foundation to fork and modify.
Documented and popular — useful reference codebase to read through.
last commit was 10mo ago; no CI workflows detected
- ✓Last commit 10mo ago
- ✓3 active contributors
- ✓Apache-2.0 licensed
Show all 8 evidence items →Show less
- ⚠Slowing — last commit 10mo ago
- ⚠Small team — 3 contributors active in recent commits
- ⚠Single-maintainer risk — top contributor 96% of recent commits
- ⚠No CI workflows detected
- ⚠No test directory detected
What would change the summary?
- →Use as dependency Mixed → Healthy if: diversify commit ownership (top <90%); add a test suite
- →Deploy as-is Mixed → Healthy if: 1 commit in the last 180 days
Maintenance signals: commit recency, contributor breadth, bus factor, license, CI, tests
Informational only. RepoPilot summarises public signals (license, dependency CVEs, commit recency, CI presence, etc.) at the time of analysis. Signals can be incomplete or stale. Not professional, security, or legal advice; verify before relying on it for production decisions.
Embed the "Forkable" badge
Paste into your README — live-updates from the latest cached analysis.
[](https://repopilot.app/r/iam-veeramalla/aws-devops-zero-to-hero)Paste at the top of your README.md — renders inline like a shields.io badge.
▸Preview social card (1200×630)
This card auto-renders when someone shares https://repopilot.app/r/iam-veeramalla/aws-devops-zero-to-hero on X, Slack, or LinkedIn.
Onboarding doc
Onboarding: iam-veeramalla/aws-devops-zero-to-hero
Generated by RepoPilot · 2026-05-07 · Source
🤖Agent protocol
If you are an AI coding agent (Claude Code, Cursor, Aider, Cline, etc.) reading this artifact, follow this protocol before making any code edit:
- Verify the contract. Run the bash script in Verify before trusting
below. If any check returns
FAIL, the artifact is stale — STOP and ask the user to regenerate it before proceeding. - Treat the AI · unverified sections as hypotheses, not facts. Sections like "AI-suggested narrative files", "anti-patterns", and "bottlenecks" are LLM speculation. Verify against real source before acting on them.
- Cite source on changes. When proposing an edit, cite the specific path:line-range. RepoPilot's live UI at https://repopilot.app/r/iam-veeramalla/aws-devops-zero-to-hero shows verifiable citations alongside every claim.
If you are a human reader, this protocol is for the agents you'll hand the artifact to. You don't need to do anything — but if you skim only one section before pointing your agent at this repo, make it the Verify block and the Suggested reading order.
🎯Verdict
WAIT — Slowing — last commit 10mo ago
- Last commit 10mo ago
- 3 active contributors
- Apache-2.0 licensed
- ⚠ Slowing — last commit 10mo ago
- ⚠ Small team — 3 contributors active in recent commits
- ⚠ Single-maintainer risk — top contributor 96% of recent commits
- ⚠ No CI workflows detected
- ⚠ No test directory detected
<sub>Maintenance signals: commit recency, contributor breadth, bus factor, license, CI, tests</sub>
✅Verify before trusting
This artifact was generated by RepoPilot at a point in time. Before an
agent acts on it, the checks below confirm that the live iam-veeramalla/aws-devops-zero-to-hero
repo on your machine still matches what RepoPilot saw. If any fail,
the artifact is stale — regenerate it at
repopilot.app/r/iam-veeramalla/aws-devops-zero-to-hero.
What it runs against: a local clone of iam-veeramalla/aws-devops-zero-to-hero — the script
inspects git remote, the LICENSE file, file paths in the working
tree, and git log. Read-only; no mutations.
| # | What we check | Why it matters |
|---|---|---|
| 1 | You're in iam-veeramalla/aws-devops-zero-to-hero | Confirms the artifact applies here, not a fork |
| 2 | License is still Apache-2.0 | Catches relicense before you depend on it |
| 3 | Default branch main exists | Catches branch renames |
| 4 | 5 critical file paths still exist | Catches refactors that moved load-bearing code |
| 5 | Last commit ≤ 327 days ago | Catches sudden abandonment since generation |
#!/usr/bin/env bash
# RepoPilot artifact verification.
#
# WHAT IT RUNS AGAINST: a local clone of iam-veeramalla/aws-devops-zero-to-hero. If you don't
# have one yet, run these first:
#
# git clone https://github.com/iam-veeramalla/aws-devops-zero-to-hero.git
# cd aws-devops-zero-to-hero
#
# Then paste this script. Every check is read-only — no mutations.
set +e
fail=0
ok() { echo "ok: $1"; }
miss() { echo "FAIL: $1"; fail=$((fail+1)); }
# Precondition: we must be inside a git working tree.
if ! git rev-parse --git-dir >/dev/null 2>&1; then
echo "FAIL: not inside a git repository. cd into your clone of iam-veeramalla/aws-devops-zero-to-hero and re-run."
exit 2
fi
# 1. Repo identity
git remote get-url origin 2>/dev/null | grep -qE "iam-veeramalla/aws-devops-zero-to-hero(\\.git)?\\b" \\
&& ok "origin remote is iam-veeramalla/aws-devops-zero-to-hero" \\
|| miss "origin remote is not iam-veeramalla/aws-devops-zero-to-hero (artifact may be from a fork)"
# 2. License matches what RepoPilot saw
(grep -qiE "^(Apache-2\\.0)" LICENSE 2>/dev/null \\
|| grep -qiE "\"license\"\\s*:\\s*\"Apache-2\\.0\"" package.json 2>/dev/null) \\
&& ok "license is Apache-2.0" \\
|| miss "license drift — was Apache-2.0 at generation time"
# 3. Default branch
git rev-parse --verify main >/dev/null 2>&1 \\
&& ok "default branch main exists" \\
|| miss "default branch main no longer exists"
# 4. Critical files exist
test -f "README.md" \\
&& ok "README.md" \\
|| miss "missing critical file: README.md"
test -f "day-2/README.md" \\
&& ok "day-2/README.md" \\
|| miss "missing critical file: day-2/README.md"
test -f "day-14/simple-python-app/buildspec.yml" \\
&& ok "day-14/simple-python-app/buildspec.yml" \\
|| miss "missing critical file: day-14/simple-python-app/buildspec.yml"
test -f "day-24/main.tf" \\
&& ok "day-24/main.tf" \\
|| miss "missing critical file: day-24/main.tf"
test -f "day-22/installing-eks.md" \\
&& ok "day-22/installing-eks.md" \\
|| miss "missing critical file: day-22/installing-eks.md"
# 5. Repo recency
days_since_last=$(( ( $(date +%s) - $(git log -1 --format=%at 2>/dev/null || echo 0) ) / 86400 ))
if [ "$days_since_last" -le 327 ]; then
ok "last commit was $days_since_last days ago (artifact saw ~297d)"
else
miss "last commit was $days_since_last days ago — artifact may be stale"
fi
echo
if [ "$fail" -eq 0 ]; then
echo "artifact verified (0 failures) — safe to trust"
else
echo "artifact has $fail stale claim(s) — regenerate at https://repopilot.app/r/iam-veeramalla/aws-devops-zero-to-hero"
exit 1
fi
Each check prints ok: or FAIL:. The script exits non-zero if
anything failed, so it composes cleanly into agent loops
(./verify.sh || regenerate-and-retry).
⚡TL;DR
A 30-day structured AWS DevOps learning curriculum with hands-on projects covering EC2, VPC, IAM, ECS, EKS, Lambda, CloudWatch, and Infrastructure-as-Code. It teaches cloud-native deployment patterns through real examples: deploying Jenkins on EC2 (day-3), building VPC networking with security groups and NACLs (day-7), containerizing Python apps with Docker and CodeDeploy (day-14), monitoring with CloudWatch custom metrics (day-16), and orchestrating Kubernetes on EKS with ALB ingress controllers (day-22). The repo bundles Python automation scripts, Terraform infrastructure code, Docker images, and markdown walkthroughs aligned to a YouTube video series. Day-based directory structure: each day-N/ folder contains a focused topic (e.g., day-14/ covers CodeDeploy + Docker, day-22/ covers EKS setup). Within projects, typical layout is README.md (theory + steps), infrastructure code (main.tf, Dockerfile, appspec.yml), and runnable scripts (Python files with boto3 or shell scripts). No monorepo tooling; each day is largely standalone, encouraging learners to follow sequentially but allowing cherry-picking.
👥Who it's for
Junior and mid-level DevOps engineers and cloud infrastructure developers who want to move from zero AWS knowledge to hands-on proficiency in 30 days. Specifically targets learners who learn best through project-based examples (deploying a 2048 game app to EKS, writing Lambda functions, automating EBS snapshot cleanup) rather than conceptual lectures alone.
🌱Maturity & risk
Actively maintained educational material, not a production library. The repo has real, working examples (Flask apps in day-21, Terraform configs in day-24, Python boto3 scripts in day-16/day-18/day-25) but is explicitly designed as a learning resource, not a framework. Lacks formal test suites and CI/CD pipelines (no GitHub Actions workflows visible), which is appropriate for a curriculum. The structure suggests regular updates tied to the YouTube series release cadence.
Standard open source risks apply.
Active areas of work
The repo appears stable and complete for its original 30-day scope. No visible active development indicators in the file list (no open PR metadata, no recent commit timestamps, no GitHub Actions runs). The presence of specific, polished examples (day-21/app.py with requirements.txt, day-24/Terraform infra with userdata scripts, day-22/EKS setup with detailed markdown guides) suggests the core curriculum was completed and is now used as a reference.
🚀Get running
git clone https://github.com/iam-veeramalla/aws-devops-zero-to-hero.git
cd aws-devops-zero-to-hero
# Follow day-1 README.md to set up AWS account and credentials
# Then proceed to day-2, day-3, etc. sequentially
# For any day with Python: pip install -r <day-N>/requirements.txt
# For any day with Terraform: cd day-N && terraform init && terraform plan
Daily commands:
Depends on the day: Most days require AWS credentials configured (aws configure). For Python scripts: pip install -r day-N/requirements.txt && python day-N/script.py. For Terraform: terraform -chdir=day-N init && terraform -chdir=day-N apply. For Docker: docker build -t app day-N/simple-python-app && docker run -p 5000:5000 app. For EKS (day-22): follow day-22/installing-eks.md, then kubectl apply -f day-22/sample-app.md. Each day's README.md contains specific commands.
🗺️Map of the codebase
README.md— Main entry point documenting the 30-day AWS DevOps learning curriculum and repository structure—every contributor must understand the learning progression and scope.day-2/README.md— IAM fundamentals documentation is foundational for all AWS security practices—critical for understanding access control patterns used throughout all subsequent days.day-14/simple-python-app/buildspec.yml— CodeBuild configuration defining the CI/CD pipeline for containerized applications—serves as the primary template for deployment automation across projects.day-24/main.tf— Terraform infrastructure-as-code for provisioning AWS resources at scale—demonstrates the infrastructure foundation pattern used in real-world DevOps workflows.day-22/installing-eks.md— EKS cluster setup documentation covering Kubernetes orchestration on AWS—essential for understanding container orchestration practices in modern DevOps.interview-questions/aws-cli.md— Consolidated AWS CLI interview questions and answers—reference material for understanding practical AWS command-line operations used throughout the curriculum.day-16/custom_metrics_demo/cloudwatch_metrics.py— CloudWatch custom metrics implementation demonstrating observability patterns—core example for monitoring and logging infrastructure in AWS.
🛠️How to make changes
Add a New Learning Day Module
- Create a new day directory (e.g., day-26) in the repository root (
day-26/README.md) - Write comprehensive README documenting learning objectives, key concepts, and hands-on examples for that AWS service (
day-26/README.md) - Create subdirectories for demos, code samples, or infrastructure examples (e.g., demos/, terraform/, scripts/) (
day-26/demos/) - Add practical Python or shell scripts demonstrating the service functionality with real-world use cases (
day-26/demo_script.py) - Reference the new day in the main README.md with a brief description of the learning outcomes (
README.md)
Add a New CI/CD Pipeline Project
- Create application code in a new day directory structure with Python Flask/Django app (
day-XX/app-name/app.py) - Create Dockerfile with multi-stage build pattern following day-14 and day-21 examples (
day-XX/app-name/Dockerfile) - Create buildspec.yml defining CodeBuild steps for compilation, testing, and Docker image push to ECR (
day-XX/app-name/buildspec.yml) - Create appspec.yml defining CodeDeploy configuration for rolling deployments with hooks (
day-XX/app-name/appspec.yml) - Add start/stop container scripts following the pattern in day-14/simple-python-app/ (
day-XX/app-name/start_container.sh) - Document deployment steps, testing procedures, and troubleshooting in day-XX/README.md (
day-XX/README.md)
Add Infrastructure Terraform Module
- Create main.tf defining AWS resources (VPC, Subnets, EC2, RDS, ALB) following day-24/main.tf pattern (
day-24-modules/vpc-module/main.tf) - Create variables.tf with input variables for environment, instance count, CIDR blocks, and tags (
day-24-modules/vpc-module/variables.tf) - Create provider.tf specifying AWS region and required provider versions (
day-24-modules/vpc-module/provider.tf) - Add terraform.tfvars or example files documenting variable values for different environments (
day-24-modules/vpc-module/terraform.tfvars) - Create README.md explaining module purpose, input/output variables, and usage examples (
day-24-modules/vpc-module/README.md)
Add CloudWatch Monitoring Implementation
- Create Python script in day-16 structure implementing custom metrics using boto3 CloudWatch client (
day-16/new-service-metrics/cloudwatch_metrics.py) - Create requirements.txt specifying boto3 and other dependencies (
day-16/new-service-metrics/requirements.txt) - Implement metric publishing following the pattern in day-16/custom_metrics_demo/cloudwatch_metrics.py (
day-16/new-service-metrics/cloudwatch_metrics.py) - Add README.md documenting metric names, dimensions, and how to view them in CloudWatch console (
day-16/new-service-metrics/README.md)
🔧Why these technologies
- AWS EC2 — Foundation for understanding virtual compute infrastructure and hosting containerized applications in the cloud.
- Docker & Containerization — Enables consistent application packaging and deployment across development, testing, and production environments.
- Terraform (IaC) — Allows declarative, version-controlled infrastructure provisioning and reproducible environment setup at scale.
- AWS CodePipeline/CodeBuild/CodeDeploy — Provides native AWS CI/CD automation eliminating manual deployment steps and enabling continuous delivery practices.
- Amazon EKS & Kubernetes — Enables container orchestration for managing microservices, scaling, and self-
🪤Traps & gotchas
AWS credentials: All Python scripts (day-16, day-18, day-25) assume ~/.aws/credentials or environment variables are configured; tests will silently fail if not. Terraform state: day-24 and day-22 examples use local state by default; multi-person learning requires S3 backend setup. Region-specific resources: Route 53 and EKS examples assume us-east-1 or specific availability zones—hardcoded region references in Terraform will fail in other regions. IAM permissions: day-7 EC2 instances need specific IAM roles (as mentioned in README) but role ARNs are not pre-created; learners must attach manually or add to Terraform. EKS cost: day-22 EKS cluster provisioning incurs AWS charges (~$0.10/hour control plane); README does not warn of this. Docker image sizes: day-14 and day-21 Dockerfiles use docker run without specifying image cleanup—learners may accumulate gigabytes of unused images. Deprecated Python 2: No explicit Python 3.8+ requirement stated, but boto3 in recent versions drops Python 2 support silently.
🏗️Architecture
💡Concepts to learn
- Infrastructure as Code (IaC) — day-24 uses Terraform HCL to define VPC, EC2, security groups declaratively; this pattern is the DevOps standard for reproducible, version-controlled infrastructure instead of clicking the AWS console
- Identity and Access Management (IAM) policies and roles — day-2 and day-7 emphasize least-privilege access; understanding principal (user/role), resource, action, and condition JSON is critical for securing any AWS deployment (EC2, Lambda, ECS)
- Virtual Private Cloud (VPC) design patterns — day-4 and day-7 teach subnet isolation, route tables, and network ACLs; proper VPC segmentation (public subnets for load balancers, private for databases) is the foundation of secure multi-tier AWS architectures
- Container orchestration and declarative pod deployment — day-22 introduces EKS and Kubernetes manifests (day-22/sample-app.md defines Deployment and Service resources); understanding declarative YAML specs vs. imperative commands is essential for cloud-native DevOps
- CloudWatch custom metrics and monitoring — day-16 teaches pushing custom metrics (e.g., application-specific counters) via boto3; observability is non-negotiable for production systems, and CloudWatch is AWS's native solution
- CI/CD pipeline definitions (AppSpec and BuildSpec) — day-14 uses appspec.yml (CodeDeploy lifecycle) and buildspec.yml (CodeBuild steps); these declarative files automate testing, building, and deploying applications—the DevOps automation cornerstone
- DNS failover and health checks (Route 53) — day-6 covers Route 53's geolocation and failover routing policies; this enables high-availability architectures where traffic automatically reroutes if a primary endpoint fails
🔗Related repos
hashicorp/terraform-aws-modules— Curated, production-grade Terraform modules for VPC, EC2, ECS, EKS that extend the day-24 and day-22 examples with best practicesaws-samples/aws-cdk-examples— AWS CDK (Infrastructure as Code in Python/TypeScript) alternative to Terraform for the same day-24 infrastructure patterns, useful for learners who prefer Python over HCLkelseyhightower/kubernetes-the-hard-way— Deep-dive Kubernetes setup that complements day-22's managed EKS approach with understanding of what EKS abstracts awayaws/aws-cli— Official AWS CLI repo—all day-N examples assume aws CLI; source reference for commands used throughout the curriculumboto/boto3— Official boto3 library (Python SDK for AWS) used in day-16, day-18, day-25 scripts; learners debugging API calls should reference this
🪄PR ideas
To work on one of these in Claude Code or Cursor, paste:
Implement the "<title>" PR idea from CLAUDE.md, working through the checklist as the task list.
Add requirements.txt validation and Python environment setup documentation for day-14, day-16, day-21, and day-25
The repo contains multiple Python projects (day-14/simple-python-app, day-16/custom_metrics_demo, day-16/default_metrics_demo, day-21, day-25) with scattered requirements.txt files but no unified setup instructions or validation. This creates friction for learners following the 30-day curriculum. A PR should consolidate setup instructions and add a script to validate all Python environments can be installed.
- [ ] Create a root-level setup-python-environments.sh script that validates all requirements.txt files across day-14, day-16, day-21, day-25
- [ ] Update each day's README.md (day-14/README.md, day-16/README.md, day-21/README.md, day-25/README.md) with explicit 'Prerequisites' section listing Python version and pip install commands
- [ ] Add a .python-version file or comment in main README.md specifying minimum Python version (e.g., 3.8+)
- [ ] Document any conflicting dependencies (e.g., if Flask version differs between day-14/simple-python-app/requirements.txt and day-21/requirements.txt)
Create integration tests for day-24 Terraform infrastructure and day-2/day-8 IAM interview questions with practical examples
day-24 contains Terraform files (main.tf, provider.tf, variables.tf, userdata.sh) for AWS infrastructure but lacks validation tests. Additionally, day-2 and day-8 contain interview questions about IAM but no executable examples to verify answers. A PR should add Terraform validation and create runnable Python/Bash examples that demonstrate each IAM concept from the interview questions.
- [ ] Add terraform validate and terraform fmt checks in a test script for day-24/ (test-terraform.sh)
- [ ] Create day-2/terraform-iam-examples/ with Terraform code for 3-5 core IAM patterns (e.g., cross-account access, policy simulation) referenced in day-2/README.md interview questions
- [ ] Create day-8/iam-validation-examples/ with Python scripts using boto3 to demonstrate IAM concepts (users, groups, policies, roles) with assertions that validate expected behavior
- [ ] Add a section to day-2/README.md and day-8/Interview_q&a linking to these runnable examples
Add GitHub Actions CI workflow to validate Docker builds and Python code quality across day-14, day-21 Dockerfiles
The repo contains Dockerfiles (day-14/simple-python-app/Dockerfile, day-21/Dockerfile) and shell scripts (day-14/simple-python-app/start_container.sh, stop_container.sh) but no CI pipeline to catch build failures early. Contributors and learners will benefit from automated validation that Dockerfiles build successfully and Python code passes linting.
- [ ] Create .github/workflows/docker-build-validate.yml that runs 'docker build' for day-14/simple-python-app/Dockerfile and day-21/Dockerfile on every PR
- [ ] Add .github/workflows/python-lint.yml that runs pylint or flake8 on all .py files in day-14, day-16, day-21, day-25 directories
- [ ] Update root README.md with a 'CI/CD Status' badge and 'Contributing' section that mentions these automated checks
- [ ] Add a CONTRIBUTING.md file referencing these workflows and requirements for new contributions (e.g., 'PRs must pass Docker build and Python linting')
🌿Good first issues
- Add Python requirements.txt pinning across all days: day-16/default_metrics_demo/requirements.txt, day-25/requirements.txt, and day-21/requirements.txt lack version pins. Pinning boto3>=1.26.0, Flask==2.3.0, etc. ensures scripts don't break on AWS API changes. Impact: ~15 minute contributor task, improves reliability for learners.: Prevents silent breakage when dependencies auto-update
- Document IAM role creation for day-7 project: day-7/README.md mentions 'create and assign IAM roles to instances with appropriate permissions' but doesn't provide the actual policy JSON or Terraform code. Add
day-7/iam-role-template.tfwith a reusable role definition. Impact: ~30 minutes, solves learner confusion on a critical networking lesson.: Reduces manual AWS console steps and makes the project fully reproducible with Terraform - Add cost estimation to day-22 EKS guide: day-22/prerequisites.md should mention that EKS control plane costs $0.10/hour (~$73/month if left running). Add a
day-22/cleanup.mdwitheksctl delete cluster --name <name>to prevent accidental charges. Impact: ~20 minutes, prevents learner surprises on their AWS bill.: Educational resource should warn of cost traps explicitly
⭐Top contributors
Click to expand
Top contributors
- @iam-veeramalla — 65 commits
- @karthik3491 — 2 commits
- @praveenreddy33333 — 1 commits
📝Recent commits
Click to expand
Recent commits
f4aa48e— Merge pull request #158 from karthik3491/patch-3 (iam-veeramalla)eaf3717— Add AWS Terraform image for reference (karthik3491)fe0c4f1— Merge pull request #156 from karthik3491/patch-3 (iam-veeramalla)21f0f6f— Update alb-controller-add-on.md remove whitespace in ALB (karthik3491)ec380ad— Update alb-controller-add-on.md (iam-veeramalla)1c98b77— Update alb-controller-add-on.md (iam-veeramalla)717ce00— Update README.md (iam-veeramalla)cf58518— aws interview questions (iam-veeramalla)a7ad99d— Create lambda_function_permissions.md (iam-veeramalla)c574936— add docs for day-25 (iam-veeramalla)
🔒Security observations
Failed to generate security analysis.
LLM-derived; treat as a starting point, not a security audit.
👉Where to read next
- Open issues — current backlog
- Recent PRs — what's actively shipping
- Source on GitHub
Generated by RepoPilot. Verdict based on maintenance signals — see the live page for receipts. Re-run on a new commit to refresh.