Skip to main content

A script to deploy secure (SSL) single page application (SPA) or HTML static site on AWS S3, using S3, Route53, Cloudfront and ACM.

Project description


S3lify, a script to deploy secure (SSL) single page application (SPA) or HTML static site on AWS S3, using S3, Route53, Cloudfront and ACM.

How does it work?


Install S3lify. It's a Python script, run the pip command below

pip install s3lify

Then navigate to the root of the directory that contains your site, then initialize S3lify

s3lify init

Then edit the config file s3lify.yml to match your site's information

Setup Process

Setup S3lify

s3lify setup

  • It creates the website on S3 by creating a new website bucket
  • It creates an DNS entry on Route53 pointing to S3 website bucket
  • It provisions an SSL certificate using ACM, and validates the domain by adding the and ACM CNAME on Route53
  • (If the domain is purchased through Route53Domains, it will update the DNS server name)
  • It creates a new Cloudfront distribution and attaches the SSL certificate provided by ACM
  • It updates the Route53 with the Cloudfront's domain name
  • Now your SSL site is ready to deploy. You will be able to access your site via ''
  • Ready to deploy!

Deploy Process

s3lify deploy

  • It purges all files in S3 bucket
  • It invalidates all objects in cloudfront
  • Upload the directory to S3
  • Sites updated successfully
  • That's it!

AWS Service Used

  • S3
  • Route53
  • Route53 Domains
  • Cloudfront
  • ACM


  • Can I use only S3 website?

Yes. In the s3lify.yml set distribution: s3

  • I deploy my site, but I don't see the changes.

Make sure you build your site first, then run s3lify deploy


pip install s3lify: Install S3lify

s3lify init: Init S3lify in the directory

s3lify setup: Setup S3lify and all the AWS services needed

s3lify deploy: Deploy the site

s3lify status: see the status of the site


At the root of the directory, outside of the build folder, create the config file s3lify.yml

# s3lify.yml
# -----------------------------------------------------------------------------
# S3lify config
# -----------------------------------------------------------------------------

#:: AWS credentials and region
aws_region: us-east-1
# aws_access_key_id: 
# aws_secret_access_key: 

#:: Site Info
# The domain without the 'www.'. It will create the S3 bucket with it
domain:  # ''

# The directory containing the site to upload, from the CWD running s3now
site_directory: ./mysite

# For working with SPA, point the error_file to 'index.html' 
index_file: index.html # index.html
error_file: error.html # error.html

#:: Purge files.
purge_files: True         # To delete all the files on S3
purge_exclude_files:      # Files not to delete on purge
  - index.html
  - error.html

#:: distribution
# The type of distribution
# s3 | route53 | cloudfront
# default: s3
# s3: to deploy to s3 only
# route53: will deploy on s3 and set the domain on Route53
# cloudfront: deploy on s3, set route53, set ACM for SSL and activate cloudfront 
distribution: cloudfront

#:: update_route53domains_dns
# default: True
# when true it will attempt to update the domain DNS with the route53 Name servers
update_route53domains_dns: True

#:: invalidate_cloudfront_objects
# To invalidate cloudfront objects, so it can retrieve new contents
invalidate_cloudfront_objects: True

License: MIT

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

s3lify-0.1.0.tar.gz (21.7 kB view hashes)

Uploaded source

Built Distribution

s3lify-0.1.0-py2-none-any.whl (23.6 kB view hashes)

Uploaded py2

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page