JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 14621
  • Score
    100M100P100Q138228F
  • License MIT

S3 Asset copy for serverless

Package Exports

  • serverless-s3-deploy

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (serverless-s3-deploy) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

serverless-s3-deploy

Plugin for serverless to deploy files to a variety of S3 Buckets

Usage

Add to your serverless.yml:

  plugins:
    - serverless-s3-deploy

  custom:
    assets:
       - bucket: my-bucket
         files:
          - source: ../assets/
            globs: **/*.css
          - source: ../app/
            globs:
              - **/*.js
              - **/*.map
       - bucket: my-other-bucket
         files:
          - source: ../email-templates/
            globs: **/*.html

You can specify any number of bucket that you want.

You can specify source relative to the current directory.

Each source has its own list of globs, which can be either a single glob, or a list of globs.

Now you can upload all of these assets to your bucket by running:

$ sls s3delpoy

ACL

You can optionally specific an ACL for the files uploaded on a per bucket basis:

  custom:
    assets:
      - bucket: my-bucket
        acl: private
        files:

The default value is public-read. Options are defined here.

IAM Configuration

You're going to need an IAM policy that supports this deployment. This might be a good starting point:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::${bucket}"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:PutObjectAcl",
                "s3:GetObject",
                "s3:DeleteObject"
            ],
            "Resource": [
                "arn:aws:s3:::${bucket}/*"
            ]
        }
    ]
}