This is a submission for the Pulumi Deploy and Document Challenge: Fast Static Website Deployment

What I Built

A streamlined static website generator deployed to AWS S3 + CloudFront using Pulumi, featuring:

  • Blazing-fast build times with Vite.js (React framework)
  • Automated HTTPS via Let's Encrypt
  • Custom domain integration
  • CI/CD pipeline with GitHub Actions
  • Cost-optimized CDN caching strategies

My Journey

Setting the Stage

"Why Pulumi?"

While exploring IaC tools, Pulumi's JavaScript/TypeScript support convinced me. Unlike Terraform's HCL, writing actual code felt more intuitive for complex deployments. Plus, its multi-cloud capabilities promised future-proofing.

The Tech Stack

Component Purpose
Vite + React Lightning-fast frontend build
Pulumi Infrastructure-as-Code
AWS S3 Static hosting backbone
CloudFront Global content delivery
Route53 Custom domain management

Key Challenges & Solutions

1️⃣ State Management: Initial state file mishaps caused duplicate deployments.

Solution: Implemented remote state locking with AWS S3 + DynamoDB

2️⃣ CDN Purging: Stale content after updates

Solution: Added automated CloudFront invalidation as part of deployment

3️⃣ Cost Optimization: Over-provisioned CDN tiers

Solution: Implemented tiered caching with cache behaviors

Pulumi Magic

// CloudFront distribution setup snippet
const distribution = new cloudfront.Distribution("MySiteDist", {
  distributionConfig: {
    origins: [{
      domainName: s3Bucket.bucketRegionalDomainName,
      originId: "S3Origin",
      s3OriginConfig: { originAccessIdentity: originAccessIdentity.ref }
    }],
    enabled: true,
    defaultRootObject: "index.html",
    // ... other configs
  }
});

Why Pulumi Shines

  1. Real Code, Real Power - Type-checked infrastructure configurations
  2. Cross-Cloud Synergy - Easily switch cloud providers using same codebase
  3. Rich Ecosystem - 80+ pre-built resource providers
  4. DevEx First - Visual Studio Code previews with Pulumi Preview

Best Practices Checklist

✅ Use pulumi import for existing resources

✅ Implement rollback strategies with pulumi up --diff

✅ Separate config values using .env files

✅ Monitor costs with Pulumi's built-in AWS billing integration


Submission Ready Checklist

☑️ Live demo verified

☑️ Repository includes full README

☑️ Pulumi program includes error handling

☑️ Documentation tested with pulumi preview

☑️ Open-source license included

"The cloud is not just a technical platform – it's a canvas for innovation."

– Adapted from AWS CTO Werner Vogels