@jesusgollonet/pulumi-static-website
v0.0.1
Published
This Pulumi module provides infrastructure as code for deploying a static website using AWS S3 and CloudFront. It creates a secure setup with S3 bucket configured for web hosting, CloudFront distribution for content delivery, and proper security configura
Readme
Pulumi Static Website Module
This Pulumi module provides infrastructure as code for deploying a static website using AWS S3 and CloudFront. It creates a secure setup with S3 bucket configured for web hosting, CloudFront distribution for content delivery, and proper security configurations including Origin Access Control (OAC).
Features
- S3 bucket configured for static website hosting
- CloudFront distribution with HTTPS support
- Origin Access Control (OAC) for secure S3 access
- Bucket policy configured for CloudFront access
- Public access blocking for S3 bucket
- Default cache behavior configuration
- Automated SSL/TLS certificate management
Prerequisites
- Pulumi CLI
- Node.js
- AWS credentials configured
- TypeScript knowledge
Installation
- Clone this repository
- Install dependencies:
npm installConfiguration
The module uses Pulumi configuration to manage environment-specific settings. Create a new stack and set the required configuration values:
pulumi stack init devWhile custom domain support is planned for future implementation, the current version uses CloudFront's default domain.
Usage
Basic usage example:
import * as pulumi from "@pulumi/pulumi";
import { StaticWebsite } from "./src/static-website";
const website = new StaticWebsite("my-static-website", {
tags: {
name: "my-static-website",
},
});
// Export the infrastructure outputs
export const bucketName = website.bucketName;
export const cdnId = website.cdnId;
export const cdnUrl = website.cdnUrl;Outputs
The module exports the following values:
bucketName: The name of the created S3 bucketcdnId: The ID of the CloudFront distributioncdnUrl: The CloudFront domain name for accessing your website
Security Features
The module implements several security best practices:
- S3 bucket public access is blocked by default
- CloudFront Origin Access Control (OAC) for secure S3 access
- HTTPS-only content delivery
- Restricted S3 bucket policy
Architecture
The infrastructure consists of:
- S3 Bucket: Hosts the static website files
- CloudFront Distribution: Serves content through AWS's global CDN network
- Origin Access Control: Secures access between CloudFront and S3
- Bucket Policy: Allows only CloudFront to access the S3 bucket
Planned Features
- Custom domain support with ACM certificate integration
- Optional password protection using CloudFront functions
- Additional cache behavior configurations
- Custom error page configuration
- Multiple origin support
