Cloud Provider ‐ Choice - Campus-Castolo/m300 GitHub Wiki
☁️ Cloud Provider Choice – Why I Chose AWS
This project is built entirely on Amazon Web Services (AWS) as the chosen cloud provider for hosting, networking, orchestration, observability, and automation.
🔍 Why AWS?
AWS was selected for this project for several important reasons:
✅ 1. Simplicity and Compatibility
AWS offers a highly modular infrastructure with native support for all services used in this project:
- ECS Fargate for serverless container execution
- ECR for private container registry
- RDS for managed MySQL database
- CloudWatch for monitoring, metrics, logs, and alarms
- Lambda for automated backup execution
- IAM, SSM, KMS for security and access control
➡️ This stack works out of the box with Terraform and GitHub Actions, reducing setup overhead and minimizing the need for platform-specific workarounds.
✅ 2. Strong Documentation and Community
AWS has extensive learning resources, community examples, and Terraform module support — all of which helped accelerate project implementation, especially around:
- ECS task/service definitions
- Role assumption and IAM policy scoping
- ECR authentication within GitHub Actions
- Logging and alert integrations
🔁 Mid-Project Switch: From Learner Lab to Free Tier Account
🛠️ Initial Environment: AWS Learner Lab
At the start of the project, the infrastructure was deployed using AWS Learner Lab through a temporary sandbox provided for academic purposes. This allowed rapid prototyping and testing in a restricted environment.
❌ Encountered Problem
The Learner Lab prohibited full access to private container registries (ECR) when pulling images via ECS. This introduced a deployment failure in the GitHub Action pipeline due to restricted image pull permissions in the sandboxed ECS environment.
✅ Final Setup: Private Free Tier AWS Account
To resolve this limitation and allow end-to-end testing, the infrastructure was redeployed using a personal AWS Free Tier account, where:
- All IAM permissions could be properly scoped.
- ECS could pull Docker images from ECR.
- Monitoring, alerts, autoscaling, and RDS access could be fully configured.
This shift enabled the successful completion of:
- CI/CD pipeline testing
- Infrastructure-as-code deployment via Terraform
- Error simulation and CloudWatch validation
🤑💸 Costs?
There were no costs everything used in this project is Free-tier eligable thus generating no costs on my end.
📌 Conclusion
AWS proved to be the most suitable platform for this project due to:
- Out-of-the-box support for all components
- Strong Terraform integration
- Free Tier capabilities for end-to-end deployment
- Troubleshooting flexibility compared to restricted learner environments
It allowed full realization of the M300 competencies and aligned seamlessly with modern DevOps practices.