Static site delivery pipeline
S3, CloudFront and a deploy that takes forty seconds.
- 2025
- Delivery
- Terraform · S3 · CloudFront · Route 53 · GitHub Actions
40s
Deploy time, from push to live
0
Long-lived access keys in CI
1 cmd
Rollback to any previous release
the problem
Placeholder. A marketing site was deployed by hand over FTP, with no rollback and no cache invalidation. Releases were avoided because they were frightening.
what I built
Defined the bucket, distribution, certificate and DNS records as a reusable Terraform module.
Moved releases to GitHub Actions with an OIDC role, so no long-lived AWS keys exist anywhere.
Added targeted CloudFront invalidation on deploy instead of blanket cache clears.
architecture
Resources, by tier
Edge
+aws_cloudfront_distribution
+aws_acm_certificate
Origin
+aws_s3_bucket
+aws_s3_bucket_policy
DNS
+aws_route53_record
CI
+aws_iam_role.github_oidc
next project