Skip to main content

Deploy static websites using a single command

Project description

static-deployer

What is static-deployer?

static-deployer aims to simplify the deploy and rollback of your static website (frontend) to AWS using a single command. It still does not create the AWS resources for you, so you need to have a previously configured S3 bucket and a CloudFront distribution configured with an origin to your S3 bucket. The credentials you will use to run the static-deployer need to have permission List+Read+Write permissions to the specified bucket and cloudfront distribution.

How to install?

pip3 install static-deployer

How to configure the AWS credentials?

We recomend using aws-vault because it does not store your credentials in plaintext. But you can also use aws-cli.

After installing aws-vault, add a new profile using the following command:

aws-vault add mysite

How to deploy a static website?

aws-vault exec mysite -- static-deployer deploy \
    --root-dir ROOT_DIR \
    --patterns PATTERNS \
    --bucket-name BUCKET_NAME \
    --distribution-id DISTRIBUTION_ID \
    --origin-name ORIGIN_NAME \
    --version VERSION
    --cache-maxage "1 hour"

The deploy does the following:

  1. Finds all files from ROOT_DIR, including only those that match the patterns specified in PATTERNS (comma separated);
  2. Unside the bucket specified by BUCKET_NAME, creates a new folder/directory with the name specified in VERSION;
  3. Uploads all files to the folder/directory created in step 2;
  4. Changes the CloudFront distribution DISTRIBUTION_ID origin named ORIGIN_NAME to point the folder/directory created in step 2;
  5. Invalidates the CloudFront distribution DISTRIBUTION_ID cache using the pattern /*;
  6. Waits for the distribution changes to complete.

How to rollback to a previous deployed version?

static-deployer rollback \
    --bucket-name BUCKET_NAME \
    --distribution-id DISTRIBUTION_ID \
    --origin-name ORIGIN_NAME \
    --version VERSION

The rollback does the following:

  1. Changes the CloudFront origin ORIGIN_NAME to point to a previously deployed version specified by VERSION.
  2. Waits for the distribution changes to complete.

Example of config file config.toml

dry_run = "false"

[content]
root_dir = "public"
patterns = "**"

[storage]
name = "your-website-domain.com"
prefix = "{{version}}"
cache_maxage = "1 hour"

[cdn]
distribution_id = "your-cloudfront-distribution-id"
origin_name = "your-cloudfront-origin-name"

How to use the config file?

static-deployer -c config.toml deploy --version VERSION

Once you have settings in a config file, you can tell static-deployer to use the config file by using the arguments -c yourfile.toml. By specifying a config file, you eliminate the need of informing all parameters at every invocation. You're then required to inform only the missing parameters. The command-line arguments override any settings you have in the config file.

Project details


Download files

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

Source Distribution

static-deployer-0.1.5.tar.gz (13.3 kB view details)

Uploaded Source

Built Distribution

static_deployer-0.1.5-py3-none-any.whl (14.5 kB view details)

Uploaded Python 3

File details

Details for the file static-deployer-0.1.5.tar.gz.

File metadata

  • Download URL: static-deployer-0.1.5.tar.gz
  • Upload date:
  • Size: 13.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for static-deployer-0.1.5.tar.gz
Algorithm Hash digest
SHA256 d1e4363653b2b25dfda8e2fa9f3191504b89502951a69713387ec1cf38a0b4cb
MD5 cc24adb11b759afdf4fe88fee4ff5157
BLAKE2b-256 527d4377ac36ab072ea42af1375e7fe829800b490aa3c8dd40dadef48d626ba1

See more details on using hashes here.

File details

Details for the file static_deployer-0.1.5-py3-none-any.whl.

File metadata

File hashes

Hashes for static_deployer-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 e2a31ad904a91894aeca39449935031403dd8b88288a49721756ff33504367c4
MD5 c080344ba8f15cc491039507a3e5defa
BLAKE2b-256 0158909d8a737a5a1e0b8057d86ad7e6eb66f52a8fef64526e8815c79b054361

See more details on using hashes here.

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