aws-deploy-script-fe

1.0.9 • Public • Published

AWS Deploy script

FEArmy

AWS script for deploying your frontend applications.

Introduction

The most common configuration used for our projects is using an S3 Bucket to contain our static files. Optionally you can have a CloudFront playing as a CDN.

The aim of this script is to read all your files and sync directly to the bucket without having to install AWS CLI or any kind of credentials configuration.

This script is cross project which means you only need to have a build/ folder to sync.

Folder structure

ROOT
    build/
      index.html
      ...
    aws.js
    ...
  • The aws.js file should be at the root of your project, it will contain credentials and will export them as an object like this:

  • The aws.js file also contains a specific object called metrics to persist the measured deploy-time in a db. If you do not wish to persist the metric the object can be removed.

module.exports = {
  development: {
    accessKeyId: "XXXXXXXXXXXXXXXXXXXX",
    secretAccessKey: "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
    region: "us-east-1",
    bucket: "<Name of the bucket>",
    distributionId: "XXXXXXXXXXXXXX",
    options: { // Optional
      preserveFiles: [/^sitemap/, "bar.js"]
    }
  },
  stage: {
    accessKeyId: "XXXXXXXXXXXXXXXXXXXX",
    secretAccessKey: "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
    region: "us-east-1",
    bucket: "<Name of the bucket>",
    distributionId: "XXXXXXXXXXXXXX",
    options: { // Optional
      preserveFiles: ["static/baz.js"]
    }
  },
  metrics: {
    tech: "react/vue/angular",
    repoName: "<Name of the repository>",
    baseUrl: "<Url to the api db>"
  }
};
  • The build/ folder will contain the file you want to sync

  • The distributionId is optional, in case you've got it. The script will create an invalidation for all your files.

Options

  • preserveFiles. It allows to specify an array of S3 file paths that won't be removed when the script cleans the bucket before uploading the new build. It's useful if you want to upload files manually to the S3 bucket. Supports regex and strings

  • environment or e. It specifies the environment in which you are going to deploy your app. Also the key of your aws.js file that has the corresponding credentials

  • path or p. The path of you generated static build files.

  • outputPath or o. The S3 path to upload your files (e.g. in case you don't want to upload all files in the root of the bucket)

Usage

You can install this package globally and run aws-deploy

npm install -g aws-deploy-script-fe

The command line to execute can be:

aws-deploy --env <enviroment-name> --path <build-path>

or

aws-deploy -e <enviroment-name> -p <build-path>
  • This enviroment-name is the key of the main object exported in aws.js.
  • If no enviroment-name is declared then it will use development as default.
  • The build-path is optional and defaults to build.

Required dependencies

The dependency you need to install is aws-sdk

Required policies

To run this script you must add these action policies to the user configured in the aws.js file

"Action": [
  "s3:GetObject",
  "s3:GetObjectAcl",
  "s3:ListMultipartUploadParts",
  "s3:PutObject",
  "s3:PutObjectAcl",
  "s3:DeleteObject",
  "cloudfront:CreateInvalidation"
]

About

This project is maintained by Damián Finkelstein, Pablo Ferro, Francisco Iglesias and Lucas Zibell and it was written by Wolox.

Wolox

Readme

Keywords

none

Package Sidebar

Install

npm i aws-deploy-script-fe

Weekly Downloads

101

Version

1.0.9

License

MIT

Unpacked Size

23.6 kB

Total Files

7

Last publish

Collaborators

  • crisvega08
  • skolz
  • frankiglesias