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.