Ground Station
Diego Mendoza
Cloud & DevOps Engineer
Building scalable, automated AWS infrastructure.
Terraform
AWS
CI/CD
Python
Pipeline Layer
Projects
Infrastructure I've designed, codified, and shipped. Each one is defined in Terraform and deployed through an automated pipeline.
Global Static Site Architecture
● Live
Automated deployment of a serverless architecture using S3, CloudFront, ACM, and Route 53. Content is served from edge locations worldwide with HTTPS enforced end-to-end.
[ architecture diagram — Route 53 → CloudFront → S3 ]
- Terraform
- S3
- CloudFront
- ACM
- Route 53
- GitHub Actions
Containerized API Pipeline
● Building
CI/CD pipeline that builds Docker images, scans them for vulnerabilities, pushes to ECR, and rolls out to ECS Fargate with zero-downtime blue/green deployments.
[ architecture diagram — GitHub Actions → ECR → ECS Fargate ]
- Docker
- ECR
- ECS Fargate
- ALB
- GitHub Actions
- Python
Event-Driven Cost Watchdog
● Planned
Serverless Python functions triggered by EventBridge that monitor AWS spend, tag drift, and idle resources, then post alerts to Slack via SNS.
[ architecture diagram — EventBridge → Lambda → SNS ]
- Lambda
- EventBridge
- SNS
- Cost Explorer
- Python
- Terraform
Stratosphere
How This Site Works
This page has no servers. The request path is fully managed and fully codified:
DNS via Route 53
diegomendoza.cloud
→
CloudFront OAC
edge cache + TLS (ACM)
→
Private S3 Bucket
origin, no public access
- Route 53 holds the hosted zone and an alias record pointing the apex domain at the CloudFront distribution.
- CloudFront terminates TLS with an ACM certificate, caches assets at the edge, and redirects HTTP to HTTPS.
- Origin Access Control (OAC) signs requests to S3, so the bucket policy only trusts this one distribution.
- S3 stays fully private. Block Public Access is on, and the only reader is CloudFront.
- Terraform defines every piece above. A push to
main runs plan and apply and syncs the static files.
main.tf
# Private origin — only CloudFront may read
resource "aws_s3_bucket" "site" {
bucket = "diegomendoza.cloud"
}
resource "aws_cloudfront_origin_access_control" "oac" {
name = "site-oac"
origin_access_control_origin_type = "s3"
signing_behavior = "always"
signing_protocol = "sigv4"
}
resource "aws_cloudfront_distribution" "cdn" {
enabled = true
default_root_object = "index.html"
aliases = ["diegomendoza.cloud"]
origin {
domain_name = aws_s3_bucket.site.bucket_regional_domain_name
origin_id = "s3-site"
origin_access_control_id = aws_cloudfront_origin_access_control.oac.id
}
viewer_certificate {
acm_certificate_arn = aws_acm_certificate.site.arn
ssl_support_method = "sni-only"
}
}