A Serverless Framework plugin for deployment of static website assests of your Serverless project to AWS S3.
First, install:
npm install --save serverless-finch
Second, update serverless.yml
by adding the following:
plugins:
- serverless-finch
custom:
client:
bucketName: unique-s3-bucketname-for-your-website-files
distributionFolder: client/dist # (Optional) The location of your website. This defaults to client/dist
indexDocument: index.html # (Optional) The name of your index document inside your distributionFolder. Defaults to index.html
errorDocument: error.html # (Optional) The name of your error document inside your distributionFolder. Defaults to error.html
- Warning: The plugin will overwrite any data you have in the bucket name you set above if it already exists.
Third, Create a website folder in the root directory of your Serverless project. This is where your distribution-ready website should live. By default the plugin expects the files to live in a folder called client/dist
. But this is configurable with the distributionFolder
option (see the example yaml configuration above).
The plugin uploads the entire distributionFolder to S3 and configures the bucket to host the website and make it publicly available.
To test the plugin initially you can copy/run the following commands in the root directory of your Serverless project to get a quick sample website for deployment:
mkdir -p client/dist
touch client/dist/index.html
touch client/dist/error.html
echo "Go Serverless" >> client/dist/index.html
echo "error page" >> client/dist/error.html
Fourth, run the plugin, and visit your new website!
serverless client deploy [--stage $STAGE] [--region $REGION] [--no-delete-contents] [--no-config-change] [--no-policy-change] [--no-cors-change]
The plugin should output the location of your newly deployed static site to the console.
If later on you want to take down the website you can use:
serverless client remove
- Added the ability to set a
distributionFolder
configuration value. This enables you to upload your website files from a custom directory (Pull 12 - pradel) - Updated the URL to the official static website endpoint URL (Pull 13 - amsross)
- Added a new AWS region (Pull 14 - daguix)
- Fixed an issue with resolving serverless variables (Pull 18 - shentonfreude)
- Added the
remove
option to tear down what you deploy. (Pull 10 thanks to redroot) - Fixed automated builds for the project (no functional differences)
- You - If you're interested in having a more active role in development and becoming a maintainer get in touch.
- Fernando Medina Corey - fernando-mc
Forked from the serverless-client-s3