Cloud Computing - AWS Projects
Cloud Computing coursework โ Universidad de Las Palmas de Gran Canaria
Two production-grade AWS projects demonstrating streaming data pipelines and serverless application architectures
- Overview
- Projects
- Architecture Highlights
- Technologies Used
- Quick Start
- Project Details
- Cost Analysis
- Academic Context
- Contributing
- License
- Author
This repository contains two comprehensive cloud computing projects built on AWS, demonstrating expertise in:
- Streaming data architectures with Kinesis, Firehose, and Glue
- Serverless applications with Lambda and API Gateway
- Infrastructure as Code using CloudFormation
- Containerization with Docker and ECS Fargate
- Real-time data processing and ETL workflows
- Cost optimization strategies (87% savings demonstrated)
Both projects are production-ready, fully documented, and deployable via automated scripts.
Energy Consumption Analytics โ Real-time streaming data pipeline for energy monitoring and analysis.
- Real-time ingestion via Amazon Kinesis Data Streams
- Automated ETL with AWS Glue jobs (daily & monthly aggregations)
- Dynamic partitioning using Lambda transformations
- Data cataloging with Glue Crawler
- Scalable storage in S3 with raw/processed separation
Custom Data (JSON) โ Kinesis Stream โ Firehose (+ Lambda) โ S3 (raw)
โ
Glue Crawler โ Data Catalog
โ
Glue ETL Jobs โ S3 (processed)
โ
Final Crawler โ Athena-ready tables
# Configure AWS credentials
aws configure
# Deploy entire pipeline (automated)
cd etl-data-science/scripts
.\00_run_all.ps1- Processing time: ~5 minutes for 1000 records
- Cost: ~$15-25/month (varies with data volume)
- Scalability: Handles 1000+ records/second
Production-grade cryptocurrency portfolio manager โ Full-stack application with dual AWS architectures.
- Real-time Bitcoin prices via Binance WebSocket
- CRUD API for position management
- Dual deployment options: ECS Fargate vs. Lambda (serverless)
- Auto-generated API docs (OpenAPI/Swagger)
- Modern web interface with live P&L calculations
- API Gateway authentication with usage plans
Option A: ECS Fargate (Containerized)
Browser โ API Gateway โ VPC Link โ NLB โ ECS Fargate โ DynamoDB
(with API key) (Express.js)
Option B: Lambda (Serverless) โญ Recommended
Browser โ API Gateway โ Lambda Functions (5) โ DynamoDB
(with API key)
Serverless (5 minutes)
# 1. Package Lambda code
cd full-app-deployment/backend/lambda/lambdas
npm install --omit=dev && cd ..
Compress-Archive -Path lambdas/* -DestinationPath lambda-code.zip
# 2. Upload to S3
aws s3 mb s3://bitcoin-lambda-deploy
aws s3 cp lambda-code.zip s3://bitcoin-lambda-deploy/
# 3. Deploy stack
aws cloudformation deploy \
--template-file deploy.yml \
--stack-name bitcoin-tracker-lambda \
--parameter-overrides LambdaCodeBucket=bitcoin-lambda-deploy \
--capabilities CAPABILITY_NAMED_IAMECS Fargate (15 minutes)
cd full-app-deployment/backend/ecs
make build && make push # Build and push Docker image
aws cloudformation deploy \
--template-file deploy.yml \
--stack-name bitcoin-tracker-ecs \
--capabilities CAPABILITY_NAMED_IAM- Decoupled design: Producer โ Stream โ Processor โ Storage
- Automated orchestration: Sequential Glue job execution
- Cost-optimized: Pay-per-use with Firehose buffering
- Scalable: Auto-sharding in Kinesis, parallel Glue jobs
| Aspect | ECS Fargate | Lambda (Serverless) |
|---|---|---|
| Deployment | Container orchestration | Individual functions |
| Scaling | Manual task count | Automatic (0โ1000) |
| Cold start | Always warm | ~200ms first request |
| Cost | $57/month | $7.53/month โฌ๏ธ87% |
| Complexity | VPC, NLB, ECS service | API Gateway + Lambda |
| Best for | Traditional apps | Event-driven workloads |
- Streaming: Amazon Kinesis Data Streams, Kinesis Firehose
- Processing: AWS Lambda (Python 3.9), AWS Glue (PySpark)
- Storage: Amazon S3 (partitioned), Glue Data Catalog
- Analytics: Amazon Athena (queryable tables)
- IaC: PowerShell automation scripts
- Backend: Node.js 18, Express.js, AWS SDK v3
- Compute: AWS Lambda / ECS Fargate
- API: API Gateway (REST), OpenAPI 3.0
- Database: DynamoDB (serverless NoSQL)
- Networking: VPC, VPC Endpoints, Network Load Balancer
- Frontend: Vanilla JavaScript, Binance WebSocket API
- IaC: CloudFormation (1300+ lines YAML)
# AWS CLI configured
aws configure
# For ETL project
- PowerShell 5.1+
- Python 3.9+
# For Bitcoin tracker
- Node.js 18+
- Docker (for ECS deployment)git clone https://github.com/yourusername/ulpgc-cloud-computing-aws.git
cd ulpgc-cloud-computing-awsETL Pipeline
cd etl-data-science/scripts
.\00_run_all.ps1 # Full automated deploymentBitcoin Tracker (Serverless)
cd full-app-deployment/backend/lambda
./deploy.ps1 # PowerShell script handles everything- Producer (
kinesis.py): Reads custom JSON data and streams to Kinesis - Lambda Processor: Adds partition keys for dynamic S3 organization
- Glue Crawler: Catalogs raw data schema
- Glue ETL Jobs: Daily and monthly aggregations
- Final Crawler: Makes processed data queryable in Athena
{
"devices": [
{
"type": "HVAC System",
"id": "IOT-HEAT-01",
"data": {
"label": "Living Room Heater",
"readings": [
{
"timestamp": "2025-12-12T13:00:00",
"value": 2903.6,
"percentage": 0.73,
"voltage_v": 235.3,
"current_a": 12.34,
"temperature_c": 21.4,
"status": "active"
}
]
}
}
]
}s3://bucket/
โโโ raw/energy_consumption/processing_date=YYYY-MM-DD/
โโโ processed/
โ โโโ daily/fecha_reporte=YYYY-MM-DD/
โ โโโ monthly/fecha_mes=YYYY-MM/
โโโ scripts/
โโโ config/
โโโ errors/
| Method | Endpoint | Auth | Description |
|---|---|---|---|
GET |
/ |
โ | API information |
GET |
/health |
โ | Health check |
GET |
/openapi.json |
โ | Swagger spec |
POST |
/positions |
โ | Create position |
GET |
/positions |
โ | List all positions |
GET |
/positions/{id} |
โ | Get position by ID |
PUT |
/positions/{id} |
โ | Update position |
DELETE |
/positions/{id} |
โ | Delete position |
Authentication: x-api-key header (managed via API Gateway Usage Plans)
- CRUD Operations (
crud.js): POST, PUT, DELETE - Read Operations (
read.js): GET all, GET by ID - OpenAPI Docs (
openapi.js): Swagger specification - Health Check (
health.js): Service status - Root Handler (
root.js): Landing page
- Real-time prices: WebSocket connection to Binance
- Live P&L: Automatic profit/loss calculation
- Responsive design: Mobile-first, Binance-inspired UI
- Toast notifications: User feedback system
- Dark theme: Professional trading interface
| Service | Usage | Cost |
|---|---|---|
| Kinesis Stream | 1M records/day, 1 shard | $11.00 |
| Firehose | 1M records/day | $2.50 |
| S3 Storage | 100GB | $2.30 |
| Glue Crawler | 2 runs/day | $0.88 |
| Glue ETL Jobs | 4 runs/day, 2 DPUs | $9.60 |
| Total | ~$26.28 |
Real production cost depends on data volume and frequency
| Component | ECS Fargate | Lambda | Savings |
|---|---|---|---|
| Compute | $44.16 | $0.53 | 99% โฌ๏ธ |
| API Gateway | $7.50 | $7.00 | 7% โฌ๏ธ |
| DynamoDB | $5.00 | $5.00 | - |
| Total | $57/mo | $7.53/mo | 87% โฌ๏ธ |
Annual savings: $593.64 (Lambda vs. ECS)
Assumes: 1M requests/month, 100ms avg duration, 256MB memory
Requirements Met:
- โ S3 bucket with proper folder structure
- โ Kinesis producer with custom data format (not default examples)
- โ Firehose consumer with Lambda transformation
- โ Glue crawler, data catalog, and ETL jobs
- โ Complete documentation with diagrams and cost analysis
Grade: Pending evaluation
Requirements Met:
- โ DynamoDB table with CRUD operations
- โ API Gateway with endpoint protection
- โ Dual architecture (coupled ECS + decoupled Lambda)
- โ Auto-generated API documentation (OpenAPI)
- โ Frontend interface for testing
- โ CloudFormation for automated deployment
- โ Detailed cost comparison and justification
Grade: Pending evaluation
- Sequential job execution to prevent race conditions
- Dynamic partitioning for query optimization
- Error handling with dedicated S3 error prefix
- Automated cleanup script (
99_cleanup.ps1)
- CORS support for cross-origin requests
- Rate limiting (50 req/s, burst 100)
- VPC Endpoints for private ECR/S3 access (ECS version)
- Health monitoring with uptime tracking
- Reconnection logic for WebSocket resilience
Each project includes comprehensive documentation:
- Architecture diagrams (system flow, AWS service interactions)
- Deployment guides (step-by-step with screenshots)
- API documentation (auto-generated OpenAPI specs)
- Code comments (explaining key logic)
- Cost breakdowns (monthly and annual projections)
- AWS Kinesis Documentation
- AWS Lambda Best Practices
- API Gateway Documentation
- CloudFormation Templates
ETL Pipeline
cd etl-data-science/scripts
.\99_cleanup.ps1Bitcoin Tracker
# Serverless
aws cloudformation delete-stack --stack-name bitcoin-tracker-lambda
# ECS
aws cloudformation delete-stack --stack-name bitcoin-tracker-ecsThis repository is primarily for academic purposes. However, suggestions and improvements are welcome:
- Fork the repository
- Create a feature branch (
git checkout -b feature/improvement) - Commit changes (
git commit -m 'Add improvement') - Push to branch (
git push origin feature/improvement) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Sergio Acosta Quintana
Computer Engineering Student @ ULPGC
Cloud Computing Coursework โ 2025
- ๐ LinkedIn: linkedin.com/in/sergioacostaquintana
- ๐ง Email: Available on GitHub profile
- Universidad de Las Palmas de Gran Canaria โ Cloud Computing course
- AWS โ For free tier resources and comprehensive documentation
- Binance โ WebSocket API for real-time cryptocurrency data
- Open Source Community โ For the amazing tools and libraries
โญ Star this repository if you found it useful!
Built with โ๏ธ on AWS | Las Palmas de Gran Canaria, Canary Islands ๐ฎ๐จ

