{"id":35559448,"url":"https://github.com/charles-bucher/cloudopslab","last_synced_at":"2026-01-04T10:02:07.210Z","repository":{"id":330403350,"uuid":"1122638496","full_name":"charles-bucher/CloudOpsLab","owner":"charles-bucher","description":"CloudOpsLab: Hands-on AWS and cloud support scripts showcasing troubleshooting, automation, monitoring, and self-healing. Demonstrates practical CloudOps skills, diagnostics, and cloud problem-solving for entry-level and early-career professionals.","archived":false,"fork":false,"pushed_at":"2026-01-03T10:52:22.000Z","size":612,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-03T20:16:52.670Z","etag":null,"topics":["automation","aws","bash","cloud-support","cloudops","cloudwatch","devops","ec2","iac","incident-response","lamda","linux","monitoring","portfolio","python","s3","scripts","sysops","terraform","troubleshooting"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/charles-bucher.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-12-25T07:20:17.000Z","updated_at":"2026-01-03T13:41:09.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/charles-bucher/CloudOpsLab","commit_stats":null,"previous_names":["charles-bucher/cloudopslab"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/charles-bucher/CloudOpsLab","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/charles-bucher%2FCloudOpsLab","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/charles-bucher%2FCloudOpsLab/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/charles-bucher%2FCloudOpsLab/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/charles-bucher%2FCloudOpsLab/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/charles-bucher","download_url":"https://codeload.github.com/charles-bucher/CloudOpsLab/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/charles-bucher%2FCloudOpsLab/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28201448,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2026-01-04T02:00:06.065Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automation","aws","bash","cloud-support","cloudops","cloudwatch","devops","ec2","iac","incident-response","lamda","linux","monitoring","portfolio","python","s3","scripts","sysops","terraform","troubleshooting"],"created_at":"2026-01-04T10:02:04.173Z","updated_at":"2026-01-04T10:02:07.194Z","avatar_url":"https://github.com/charles-bucher.png","language":"Python","readme":"# CloudOpsLab 🔧\n\n![AWS](https://img.shields.io/badge/AWS-FF9900?style=for-the-badge\u0026logo=amazon-aws\u0026logoColor=white)\n![Python](https://img.shields.io/badge/Python-3776AB?style=for-the-badge\u0026logo=python\u0026logoColor=white)\n![Bash](https://img.shields.io/badge/Bash-4EAA25?style=for-the-badge\u0026logo=gnu-bash\u0026logoColor=white)\n![Linux](https://img.shields.io/badge/Linux-FCC624?style=for-the-badge\u0026logo=linux\u0026logoColor=black)\n\n![License](https://img.shields.io/badge/license-MIT-blue.svg)\n![Status](https://img.shields.io/badge/status-active-success.svg)\n![Open to Work](https://img.shields.io/badge/Open%20To%20Work-00C853?style=flat-square)\n\n**Hands-on AWS CloudOps practice lab demonstrating automation, monitoring, and troubleshooting**\n\n*Self-taught cloud engineer learning operational excellence through real-world scenarios*\n\n---\n\n## 🎯 About This Lab\n\nThis is my personal CloudOps learning environment where I'm teaching myself AWS operations by **actually doing the work**—not just following tutorials.\n\n### What Makes This Different:\n\n✅ **Real AWS account** - I'm spending ~$20/month from my delivery job to run this  \n✅ **Real problems** - I break things on purpose, then learn to fix them  \n✅ **Real solutions** - Python and Bash scripts I actually wrote and tested  \n✅ **Real documentation** - Everything is documented like production systems  \n\n### My Goal:\n\nBreak into cloud operations by proving I can **do the work**, even though I'm entry-level.\n\n---\n\n## 🧪 What I've Built\n\n### 1. CloudWatch Monitoring \u0026 Alerting 📊\n\n**What I learned:** How to set up automated monitoring that actually catches issues\n\n![CloudWatch Alarm](docs/screenshots/cloudwatch-alarm-triggered.png)\n*CloudWatch alarm I configured - it actually triggered when my test EC2 hit 80% CPU*\n\n**Skills practiced:**\n- Creating CloudWatch alarms with proper thresholds\n- Setting up SNS topics for notifications\n- Configuring email alerts\n- Testing alarm logic\n\n**Code:** [`scripts/cloudwatch_alarms.py`](scripts/cloudwatch_alarms.py)\n\n---\n\n### 2. EC2 Auto-Recovery 🔄\n\n**What I learned:** How to make instances self-heal from failures\n\n![EC2 Auto-Recovery](docs/screenshots/ec2-auto-recovery-test.png)\n*Testing auto-recovery by simulating an instance failure*\n\n**The scenario:**\n1. Configured CloudWatch alarm to detect status check failures\n2. Set up automatic recovery action\n3. Intentionally broke my test instance\n4. Watched it recover automatically\n5. Documented the whole process\n\n**Result:** Instance recovered in ~4 minutes without any manual intervention\n\n**Skills practiced:**\n- EC2 status checks (system vs instance)\n- CloudWatch alarm actions\n- Auto-recovery configuration\n- Incident response timing\n\n**Code:** [`scripts/ec2_auto_recovery.py`](scripts/ec2_auto_recovery.py)\n\n---\n\n### 3. EC2 Cost Optimization 💰\n\n**What I learned:** How to automate EC2 scheduling to save money\n\n![EC2 Scheduler](automation/screenshots/ec2-scheduler-iam-fix.png)\n*Troubleshooting IAM permissions (common real-world problem!)*\n\n**The problem:**\n- My Lambda function kept failing with `AccessDenied`\n- Had to debug IAM policies\n- Fixed permissions\n- Learned that IAM troubleshooting is a critical CloudOps skill\n\n**Skills practiced:**\n- Lambda function development\n- IAM policy debugging\n- CloudWatch Events/EventBridge\n- Cost optimization strategies\n\n**Code:** [`scripts/ec2_scheduler.py`](scripts/ec2_scheduler.py)\n\n---\n\n### 4. EC2 Management with Boto3 🐍\n\n**What I learned:** Using Python to programmatically manage AWS infrastructure\n\n![EC2 Manager](automation/screenshots/ec2-boto3-client-list.png)\n*My Python script listing and managing EC2 instances*\n\n**What it does:**\n- List all EC2 instances\n- Filter by tags and state\n- Start/stop instances in bulk\n- Handle API rate limits gracefully\n\n**Skills practiced:**\n- Boto3 SDK for Python\n- AWS API interaction\n- Error handling\n- Pagination for large result sets\n\n**Code:** [`scripts/ec2_manager.py`](scripts/ec2_manager.py)\n\n---\n\n### 5. S3 Security Auditing 🔒\n\n**What I learned:** How to detect and fix security misconfigurations\n\n![S3 Public Check](automation/screenshots/s3-public-access-detection.png)\n*Script detecting publicly accessible S3 buckets*\n\n**The scenario:**\n1. Scan all S3 buckets for public access\n2. Identify misconfigured bucket policies\n3. Automatically remediate (block public access)\n4. Generate audit report\n\n**Result:** Prevented potential data exposure through automated compliance checks\n\n**Skills practiced:**\n- S3 security best practices\n- Boto3 S3 operations\n- Policy analysis\n- Security automation\n\n**Code:** [`scripts/s3_public_check.py`](scripts/s3_public_check.py)\n\n---\n\n### 6. Security Auditing 🛡️\n\n**What I learned:** How to audit AWS accounts for security issues\n\n![Security Audit](monitoring/screenshots/security-audit-findings.png)\n*Security audit script showing compliance findings*\n\n**What it checks:**\n- ✅ IAM users without MFA\n- ✅ Overly permissive Security Groups (0.0.0.0/0)\n- ✅ S3 buckets with public access\n- ✅ Root account usage\n- ✅ Unused access keys\n\n**Skills practiced:**\n- Security auditing methodology\n- Compliance frameworks (CIS, AWS Well-Architected)\n- Python reporting\n- Remediation tracking\n\n**Code:** [`monitoring/security_audit.py`](monitoring/security_audit.py)\n\n---\n\n### 7. GuardDuty Threat Monitoring 🚨\n\n**What I learned:** How to use GuardDuty for threat detection\n\n![GuardDuty](monitoring/screenshots/guardduty-enabled.png)\n*GuardDuty actively monitoring my AWS account*\n\n**Setup:**\n- Enabled GuardDuty across account\n- Configured severity levels\n- Set up automated alerts\n- Practiced incident response\n\n**Skills practiced:**\n- Threat detection setup\n- Security monitoring\n- Finding analysis\n- Incident response basics\n\n---\n\n### 8. CloudHealth Monitoring 📈\n\n**What I learned:** Building infrastructure health checks\n\n![Health Check](monitoring/screenshots/cloud-health-monitoring.png)\n*Health monitoring script detecting infrastructure issues*\n\n**What it monitors:**\n- Instance health status\n- Disk usage\n- Memory utilization\n- Application errors from logs\n\n**Skills practiced:**\n- Multi-service monitoring\n- Health check automation\n- Log analysis\n- Alert threshold tuning\n\n**Code:** [`monitoring/health_check.py`](monitoring/health_check.py)\n\n---\n\n## 🔄 Self-Healing Infrastructure\n\n**Concept:** Infrastructure that fixes itself automatically\n\n**My learning process:**\n\n```\nIssue Occurs → Detection (Alarm) → Automated Remediation → Validation (Testing)\n```\n\n### Real Examples I've Implemented:\n\n**1. EC2 Instance Failure**\n- **Detection:** CloudWatch status check fails\n- **Action:** Automatic instance recovery\n- **Result:** 99.9% uptime maintained\n\n**2. High CPU Usage**\n- **Detection:** CloudWatch alarm at 80% CPU\n- **Action:** SNS alert to me\n- **Result:** I can investigate before outage\n\n**3. S3 Bucket Made Public**\n- **Detection:** Script finds public bucket\n- **Action:** Lambda auto-remediates to private\n- **Result:** Data exposure prevented\n\n**4. Idle Resources**\n- **Detection:** Script finds unused EC2 instances\n- **Action:** Tag for review\n- **Result:** Cost savings\n\n**Code:** [`self_healing/`](self_healing/)\n\n---\n\n## 🔍 Troubleshooting I've Done\n\n**Real problems I created and solved** (learning by breaking things)\n\n### Problem → Investigation → Solution → Prevention\n\n#### 1. IAM Permission Denied\n**Problem:** My automation script kept failing with `AccessDenied`  \n**Investigation:** Reviewed IAM policies and CloudTrail logs  \n**Solution:** Added missing S3 permissions to role  \n**Learning:** Always check CloudTrail for the exact denied action\n\n#### 2. Lambda Timeout\n**Problem:** EC2 start/stop Lambda timing out  \n**Investigation:** Analyzed CloudWatch Logs  \n**Solution:** Increased timeout and optimized code  \n**Learning:** Lambda has hard limits, design accordingly\n\n#### 3. CloudWatch Alarm Not Firing\n**Problem:** No alerts received for known issue  \n**Investigation:** Checked alarm configuration and SNS  \n**Solution:** Fixed alarm metric query and SNS subscription  \n**Learning:** Test your monitoring before you need it\n\n**Documentation:** [`troubleshooting/`](troubleshooting/)\n\n---\n\n## 💻 Skills I'm Demonstrating\n\n### AWS Services I've Actually Used:\n\n**Compute \u0026 Networking:**\n- ✅ EC2 (instance management, auto-recovery, scheduling)\n- ✅ VPC (security groups, network monitoring)\n- ✅ Lambda (automation functions)\n\n**Storage:**\n- ✅ S3 (security auditing, access control)\n- ✅ EBS (volume monitoring)\n\n**Security \u0026 Compliance:**\n- ✅ IAM (policy troubleshooting, least privilege)\n- ✅ GuardDuty (threat detection)\n- ✅ CloudTrail (audit logging)\n\n**Monitoring:**\n- ✅ CloudWatch (logs, metrics, alarms, dashboards)\n- ✅ SNS (notifications and alerting)\n- ✅ Config (compliance rules)\n\n---\n\n### Technical Skills:\n\n**Programming \u0026 Scripting:**\n- **Python** - Boto3 SDK, automation scripts\n- **Bash** - Linux administration, shell scripting\n- **Git** - Version control for all code\n\n**CloudOps Practices:**\n- Infrastructure monitoring\n- Automated remediation\n- Security auditing\n- Cost optimization\n- Incident response\n- Documentation\n\n**Tools:**\n- Boto3 (AWS SDK for Python)\n- AWS CLI\n- CloudWatch Logs Insights\n- Linux command line\n- VS Code\n\n---\n\n## 🚀 Quick Start\n\n### Prerequisites\n\n```bash\n# Required\n- AWS Account (Free Tier works)\n- Python 3.8+\n- AWS CLI configured\n- pip install boto3\n```\n\n### Setup\n\n```bash\n# 1. Clone the repository\ngit clone https://github.com/charles-bucher/CloudOpsLab.git\ncd CloudOpsLab\n\n# 2. Install dependencies\npip install -r requirements.txt\n\n# 3. Configure AWS credentials\naws configure\n\n# 4. Run a script\ncd scripts/\npython ec2_manager.py --list\n\n# 5. Run security audit\ncd ../monitoring/\npython security_audit.py\n```\n\n### Example: Testing EC2 Auto-Recovery\n\n```bash\n# Deploy EC2 with auto-recovery\ncd scripts/\npython ec2_auto_recovery.py --deploy\n\n# Simulate instance failure\npython ec2_auto_recovery.py --simulate-failure\n\n# Monitor recovery\npython ec2_auto_recovery.py --check-status\n\n# Verify recovery completed\npython ec2_auto_recovery.py --validate\n```\n\n---\n\n## 📁 Project Structure\n\n```\nCloudOpsLab/\n├── scripts/                 # Main automation scripts\n│   ├── cloudwatch_alarms.py\n│   ├── ec2_auto_recovery.py\n│   ├── ec2_manager.py\n│   ├── ec2_scheduler.py\n│   └── s3_public_check.py\n├── monitoring/              # Security \u0026 monitoring\n│   ├── screenshots/         # Proof of monitoring work\n│   ├── security_audit.py\n│   ├── health_check.py\n│   ├── guardduty_handler.py\n│   └── issue_tracker.py\n├── self_healing/            # Auto-remediation logic\n│   ├── ec2_recovery.py\n│   ├── s3_remediation.py\n│   └── lambda_functions/\n├── automation/              # Additional automation\n│   └── screenshots/         # Proof of automation work\n├── troubleshooting/         # Problem scenarios \u0026 solutions\n│   ├── iam_debugging.md\n│   ├── lambda_timeout.md\n│   └── cloudwatch_alarms.md\n├── docs/                    # Documentation\n│   ├── screenshots/         # Portfolio screenshots\n│   ├── architecture.md\n│   └── runbooks/            # Operational runbooks\n└── README.md               # You are here\n```\n\n---\n\n## 📊 My Learning Journey\n\n### What I've Learned:\n\n**Automation:**\n- Python + Boto3 makes AWS operations programmable\n- Error handling is critical for production automation\n- IAM permissions require careful planning\n- Testing automation is as important as writing it\n\n**Monitoring:**\n- You can't fix what you can't see\n- Alerts must be actionable, not noisy\n- CloudWatch Logs Insights is powerful for debugging\n- GuardDuty catches things humans miss\n\n**Self-Healing:**\n- Automate detection before remediation\n- Start with simple recovery, add complexity gradually\n- Always have manual override capability\n- Test failure scenarios regularly\n\n**Operations:**\n- Documentation saves time during incidents\n- Cost optimization requires continuous monitoring\n- Security is a daily practice, not a checkbox\n- CloudTrail is your best friend for troubleshooting\n\n---\n\n## 🎯 What I'm Working On Next\n\n**Planned improvements:**\n- [ ] ECS container monitoring\n- [ ] RDS backup automation\n- [ ] Cost optimization reports\n- [ ] Multi-region health checks\n- [ ] Systems Manager integration\n- [ ] Config compliance rules\n\n**Skills I'm practicing:**\n- [ ] Lambda with EventBridge\n- [ ] Step Functions for workflows\n- [ ] Advanced CloudWatch Logs Insights\n- [ ] Container orchestration basics\n\n---\n\n## 💰 Cost Transparency\n\n**Monthly AWS Costs for This Lab:**\n```\nEC2 (2 × t3.micro):      ~$15.00\nS3 Storage:              ~$1.00\nData Transfer:           ~$2.00\nCloudWatch Logs:         ~$2.00\n─────────────────────────────────\nTotal:                   ~$20.00/month\n```\n\n**Funded by:** My part-time delivery job while learning cloud\n\n**Worth it?** Absolutely. I'm building proof, not just theory.\n\n---\n\n## 📸 Screenshots \u0026 Evidence\n\nAll screenshots in this repo are from **my actual AWS account**. No stock images, no tutorial screenshots.\n\n**Screenshot locations:**\n- `docs/screenshots/` - General portfolio screenshots\n- `automation/screenshots/` - Automation project screenshots\n- `monitoring/screenshots/` - Monitoring \u0026 security screenshots\n\n---\n\n## 🙋‍♂️ About Me\n\n**Charles Bucher**  \nSelf-Taught Cloud Engineer | Career Transition from Delivery Driving\n\n**My Story:**\n\nI'm 40 years old, working as a delivery driver, teaching myself cloud engineering to provide better for my family. Instead of just watching tutorials, I'm actually **building things in AWS** and documenting everything.\n\n**Why trust my work?**\n- ✅ Every screenshot is from MY AWS account\n- ✅ I spend my own money running these labs ($20/month)\n- ✅ I work on these projects after 10-hour delivery shifts\n- ✅ I document everything like production systems\n\n**What I'm NOT:**\n- ❌ A senior engineer pretending to be entry-level\n- ❌ Someone who just copied tutorials\n- ❌ A paper cert chaser with no hands-on\n\n**What I AM:**\n- ✅ Self-taught and proud of it\n- ✅ Honest about being entry-level\n- ✅ Willing to start small and prove myself\n- ✅ Ready to outwork anyone for this opportunity\n\n---\n\n## 🎯 Current Status\n\n**Studying for:** AWS SysOps Administrator Associate  \n**Looking for:** Entry-level Cloud Support / SysOps / DevOps roles  \n**Location:** Florida (remote preferred)  \n**Salary expectations:** $50k+ (realistic for entry-level)\n\n### What I'm Open To:\n- Full-time W2 positions\n- Contract work through staffing agencies\n- Remote opportunities\n- Hybrid roles in Tampa Bay area\n\n---\n\n## 📞 Let's Connect\n\n[![LinkedIn](https://img.shields.io/badge/LinkedIn-0077B5?style=for-the-badge\u0026logo=linkedin\u0026logoColor=white)](https://www.linkedin.com/in/charles-bucher-cloud)\n[![Email](https://img.shields.io/badge/Email-D14836?style=for-the-badge\u0026logo=gmail\u0026logoColor=white)](mailto:quietopscb@gmail.com)\n[![Portfolio](https://img.shields.io/badge/Portfolio-FF5722?style=for-the-badge\u0026logo=google-chrome\u0026logoColor=white)](https://charles-bucher.github.io/)\n\n---\n\n## 📝 Quick Facts\n\n```yaml\nname: Charles Bucher\nrole: Self-Taught Cloud Engineer\nlocation: Florida\nstatus: Open to Work\nfocus: AWS CloudOps\n\nskills:\n  cloud: [AWS, CloudWatch, EC2, S3, Lambda, IAM]\n  scripting: [Python, Bash]\n  tools: [Boto3, AWS CLI, Git, Linux]\n  practices: [Automation, Monitoring, Security, Troubleshooting]\n\ncurrently_learning:\n  - AWS SysOps Administrator Associate\n  - Advanced CloudWatch patterns\n  - Infrastructure automation\n\nideal_role:\n  - AWS Cloud Support Associate\n  - Junior SysOps Administrator  \n  - Cloud Operations Engineer\n  - Entry-level DevOps Engineer\n\nmotivation: \"Family deserves better than paycheck-to-paycheck living\"\n```\n\n---\n\n## 🏆 Why This Lab Matters\n\n### What This Proves:\n\n**For Hiring Managers:**\n- ✅ I can actually use AWS (not just theory)\n- ✅ I troubleshoot systematically\n- ✅ I document professionally\n- ✅ I'm self-motivated (teaching myself after work)\n\n**For Me:**\n- ✅ Built confidence in AWS operations\n- ✅ Created reusable automation scripts\n- ✅ Developed systematic debugging approach\n- ✅ Have portfolio proof of hands-on work\n\n**For Other Learners:**\n- ✅ Error-driven learning works\n- ✅ You don't need expensive courses\n- ✅ Free tier + determination = real skills\n- ✅ Document everything!\n\n---\n\n## 🤝 Contributing\n\nThis is a personal learning project, but I'm open to suggestions!\n\n**Ways to help:**\n- 🐛 Report issues or bugs\n- 💡 Suggest new scenarios\n- 📝 Improve documentation\n- ⭐ Star the repo if you find it useful\n\n---\n\n## 📄 License\n\nThis project is licensed under the MIT License - see the [LICENSE.md](LICENSE.md) file for details.\n\n---\n\n## 🙏 Acknowledgments\n\n**Learning Resources:**\n- AWS Documentation\n- AWS Well-Architected Framework\n- Boto3 Documentation\n- Real-world experience from this lab\n\n**Inspiration:**\n- My family depending on this career change\n- The need to prove skills through actual work\n- Love for solving technical problems\n- This community of self-taught engineers\n\n---\n\n## ⭐ If This Helped You...\n\nIf this repo helped you learn CloudOps or gave you ideas for your own portfolio, please give it a star! It helps others find it too.\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\n**Built with ☕, Python, and a lot of trial and error**\n\n### Charles Bucher | Self-Taught Cloud Engineer\n\n*\"I can't fake experience, so I'm building proof instead\"*\n\n![Profile Views](https://komarev.com/ghpvc/?username=charles-bucher\u0026color=0e75b6\u0026style=flat-square\u0026label=Repo+Views)\n\n\u003c/div\u003e\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\n**CloudOpsLab** | Learning operational excellence one automation at a time\n\n[⬆ Back to Top](#cloudopslab-)\n\n\u003c/div\u003e","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcharles-bucher%2Fcloudopslab","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcharles-bucher%2Fcloudopslab","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcharles-bucher%2Fcloudopslab/lists"}