Loading repository data…
Loading repository data…
charles-bucher / repository
Intentionally broken AWS scenarios for hands-on troubleshooting using real cloud support workflows. Focused on logs, metrics, root cause analysis, remediation, and prevention — not tutorials or guided labs.
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
Real-world AWS incident response and troubleshooting scenarios
Who I Am: 40-year-old delivery driver teaching myself cloud engineering to provide for my family (wife + 3 kids)
What This Is: Portfolio of intentionally broken AWS environments that I fix, document, and automate—proving I can do cloud support work, not just talk about it
Why It Matters:
What I'm Looking For: Entry-level cloud support/SysOps roles ($50k-$65k) where I can start immediately and prove myself through results
Investment: 50+ hours building this after 10-hour delivery shifts, $15/month from my paycheck running real AWS infrastructure
Bottom Line: I can't fake experience, so I'm building proof instead.
This repository demonstrates hands-on cloud support skills through intentionally broken AWS environments. Each scenario simulates actual production issues requiring log analysis, metrics interpretation, root cause identification, and remediation—mirroring the daily work of cloud support engineers and SREs.
Unlike guided tutorials that walk you through perfect deployments, this lab focuses on what happens when things break. Every scenario is designed to develop real troubleshooting muscle memory:
For hiring managers: This project showcases practical cloud support capabilities—problem diagnosis, systematic troubleshooting, documentation, and automation—skills needed on day one of any cloud operations role.
AWS_Error_Driven_Troubleshooting_Lab/
├── incidents/ # Real-world incident scenarios with full context
├── errors/ # Error messages, logs, and diagnostic data
├── runbooks/ # Step-by-step troubleshooting procedures
├── scripts/ # Python automation and remediation scripts
├── lambdas/ # Lambda function code for scenarios
├── tests/ # Validation scripts to verify fixes
├── diagrams/ # Architecture diagrams and visual aids
├── screenshots/ # Evidence of troubleshooting process
└── .github/workflows/ # CI/CD automation for testing scenarios
Clone the repository
git clone https://github.com/charles-bucher/AWS_Error_Driven_Troubleshooting_Lab.git
cd AWS_Error_Driven_Troubleshooting_Lab
Install dependencies
pip install -r requirements.txt
Configure AWS credentials
aws configure
# Enter your AWS Access Key ID, Secret Access Key, and preferred region
Verify AWS access
aws sts get-caller-identity
Each incident folder contains:
scenario.md - The problem description and symptomsdeploy.py or deploy.sh - Script to create the broken environmentexpected_errors.txt - What you should see when things failsolution.md - Root cause and remediation (check after troubleshooting!)Example workflow:
# Deploy a broken scenario
cd incidents/01_lambda_s3_permission_denied
python deploy.py
# Investigate the issue using AWS CLI, console, and CloudWatch logs
# Document your findings
# Compare your solution with the provided runbook
cat ../../runbooks/01_lambda_s3_troubleshooting.md
# Clean up resources
python cleanup.py
AWS CLI Identity Check
AWS CLI configured and ready - verifying account access
S3 Buckets Created
S3 buckets deployed for troubleshooting scenarios
Lambda Functions
Lambda functions deployed - intentionally misconfigured for practice
Lab Fix Execution
PowerShell script executing remediation steps
Deploy Output
Initial deployment showing expected errors
Note: All screenshots are from my actual AWS account (Account ID: 722631436033, Region: us-east-1). No stock images or tutorial screenshots - just real troubleshooting work.
Each scenario is production-realistic and requires systematic troubleshooting:
| Scenario | AWS Services | Skills Practiced | Difficulty | Folder |
|---|---|---|---|---|
| Lambda Permission Denied | Lambda, S3, IAM | IAM policy debugging, CloudWatch log analysis | ⭐⭐ Beginner | 📁 |
| EC2 Connection Timeout | EC2, VPC, Security Groups | Network troubleshooting, security group rules | ⭐⭐ Beginner | 📁 |
| S3 Access Denied | S3, IAM, Bucket Policies | S3 permissions, bucket policy debugging | ⭐⭐⭐ Intermediate | 📁 |
| Lambda Timeout | Lambda, VPC, CloudWatch | Performance troubleshooting, timeout investigation | ⭐⭐⭐ Intermediate | 📁 |
💡 Tip: Start with the "Beginner" scenarios if you're new to AWS troubleshooting. Each incident includes a
scenario.mdfile explaining the problem and anexpected_errors.txtshowing what you should see.
This lab follows an error-driven learning model:
This mirrors actual cloud support work where you receive a ticket, investigate logs, identify root cause, implement a fix, and document the incident.
# 1. Navigate to a scenario
cd incidents/01_lambda_s3_permission_denied/
# 2. Read the scenario description
cat scenario.md
# 3. Deploy the broken environment
python deploy.py
# Output: Resources deployed. Lambda will fail with permission errors.
# 4. Investigate using AWS CLI
aws lambda get-function --function-name troubleshooting-lambda
aws logs tail /aws/lambda/troubleshooting-lambda --follow
# 5. Identify the root cause
# (IAM role missing S3 permissions)
# 6. Implement the fix
aws iam attach-role-policy \
--role-name lambda-execution-role \
--policy-arn arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess
# 7. Validate the fix
python test_fix.py
# Output: ✅ Lambda executed successfully
# 8. Document your findings
# Compare with: cat ../../runbooks/01_lambda_s3_troubleshooting.md
# 9. Clean up resources
python cleanup.py
Estimated AWS costs per scenario:
| Resource | Cost | Notes |
|---|---|---|
| Lambda executions | ~$0.01 | First 1M requests free |
| S3 storage | ~$0.05 | Minimal test data |
| EC2 instances (t3.micro) | ~$0.10/hr | Stop when not using |
| CloudWatch Logs | ~$0.02 | 5GB free tier |
| Total per scenario | ~$0.20-$0.50 | If cleaned up after |