DEV Community

Rahman Badru
Rahman Badru

Posted on

Sports API Management System

Project Description

This project demonstrates building a containerized api management system for querying sports data. It uses Amazon ECS for running containers, Amazon API Gateway for exposing REST Endpoints and an external Sports API for real-time sports data. The project showcases advanced cloud computing practices, including API management, container orchestration, and secure AWS integrations.

Project Architecture

Image description

Project Setup

  • Clone the Repository
git clone https://github.com/ifeanyiro9/containerized-sports-api.git
cd containerized-sports-api
Enter fullscreen mode Exit fullscreen mode

-Create an ECR Repository
aws ecr create-repository --repository-name sports-api --region us-east-1

  • Authenticate, Build, and Push Docker Image
aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin <AWS_ACCOUNT_ID>.dkr.ecr.us-east-1.amazonaws.com

docker build --platform linux/amd64 -t sports-api .
docker tag sports-api:latest <AWS_ACCOUNT_ID>.dkr.ecr.us-east-1.amazonaws.com/sports-api:sports-api-latest
docker push <AWS_ACCOUNT_ID>.dkr.ecr.us-east-1.amazonaws.com/sports-api:sports-api-latest
Enter fullscreen mode Exit fullscreen mode
  • Set Up an ECS Cluster with Fargate

    • Create an ECS Cluster:
    • Navigate to the ECS Console → Clusters → Create Cluster.
    • Name the cluster (e.g., sports-api-cluster).
    • Choose Fargate as the infrastructure type, then create the cluster.
  • Create a Task Definition:

  • Go to Task Definitions → Create New Task Definition.

    • Name the task definition (e.g., sports-api-task).
    • Choose Fargate as the infrastructure type.
    • Add the container:
    • Name: sports-api-container
    • Image URI: .dkr.ecr.us-east-1.amazonaws.com/sports-api:sports-api-latest
    • Container Port: 8080
    • Environment Variables:
      • Key: SPORTS_API_KEY
      • Value:
    • Save and create the task definition.
  • Deploy the Service with an Application Load Balancer (ALB):

    • Go to Clusters → Select Cluster → Service → Create Service.
    • Configuration:
    • Capacity Provider: Fargate
    • Task Definition: sports-api-task
    • Service Name: sports-api-service
    • Desired Tasks: 2
    • Networking:
      • Create a new security group allowing TCP traffic.
      • Type: All TCP, Source: Anywhere
    • Load Balancer:
      • Select Application Load Balancer (ALB).
      • ALB Configuration:
      • Create a new ALB named sports-api-alb.
      • Health Check Path: /sports
    • Create the service.
  • Test the ALB:

    • Retrieve the ALB DNS name (e.g., sports-api-alb-.us-east-1.elb.amazonaws.com).
    • Verify the API is accessible by visiting http://sports-api-alb-.us-east-1.amazonaws.com/sports.
  • Configure API Gateway

    • Create a REST API:
    • Navigate to API Gateway Console → Create API → REST API.
    • Name the API (e.g., Sports API Gateway).
    • Set Up Integration:
    • Create a resource /sports.
    • Create a GET method and choose HTTP Proxy as the integration type.
    • Enter the ALB DNS name followed by /sports.
    • Deploy the API: -Deploy the API to a stage (e.g., prod) and note the endpoint URL.
  • Test the System

    • Use a browser or curl to test: curl https://<api-gateway-id>.execute-api.us-east-1.amazonaws.com/prod/sports

Conclusion

This project demonstrates how to build a scalable, containerized sports data API management system using modern AWS services such as ECS with Fargate, API Gateway, and CloudWatch. By integrating these services, we achieved a reliable and secure infrastructure for hosting and managing APIs, while also adhering to best practices like containerization and least privilege IAM policies. Future enhancements like caching with ElastiCache, user-specific data storage with DynamoDB, and implementing CI/CD pipelines can further optimize the system for performance and maintainability. This documentation serves as a comprehensive guide to replicate, deploy, and extend the system, empowering developers to leverage AWS for similar use cases.

Image of Datadog

The Essential Toolkit for Front-end Developers

Take a user-centric approach to front-end monitoring that evolves alongside increasingly complex frameworks and single-page applications.

Get The Kit

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more