A command-line tool to deploy static websites to Amazon S3 with optional CDN and HTTPS support.
Discharge is a command-line tool that automates the deployment of static websites to Amazon S3. It simplifies AWS configuration, handles file uploads, and optionally sets up CloudFront CDN with HTTPS, reducing the manual steps typically required for static site hosting.
Developers and teams building static websites (e.g., with Jekyll, Hugo, or Middleman) who want a streamlined, scriptable deployment process to AWS without deep infrastructure expertise.
It offers an intuitive, interactive setup and idempotent deployments with built-in support for modern web features like clean URLs, CDN caching, and TLS, abstracting AWS complexity while remaining configurable.
⚡️ A simple, easy way to deploy static websites to Amazon S3.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
The `discharge init` command provides a guided UI to generate configuration files, reducing initial AWS setup complexity for users unfamiliar with S3 and CloudFront.
Automatically uploads HTML files with and without .html extensions, enabling aesthetic URLs like `example.com/page` without manual configuration or redirect rules.
Optionally sets up CloudFront with automatic TLS certificate provisioning via `discharge distribute`, simplifying secure deployments with minimal user input.
Uses file diffing to sync only changed content to S3, ensuring efficient and repeatable deployments that are safe for CI/CD pipelines.
Exclusively supports Amazon S3 and CloudFront, making it unsuitable for multi-cloud strategies or teams using alternative static hosting services.
TLS certificate verification for .io domains requires specific email addresses set up, as noted in the README, which can fail if infrastructure isn't pre-configured.
CDN setup requires running a separate `discharge distribute` command after deployment, adding an extra step compared to all-in-one deployment tools.
All configuration options must be explicitly defined with no defaults, leading to verbose `.discharge.json` files even for simple static sites.