Nitroglycerin Pickle Machine

    serverless-s3-deploy

    0.10.1 • Public • Published

    serverless-s3-deploy

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

    Note: This project is currently not maintained.

    Installation

     npm install --save-dev serverless-s3-deploy
    

    Usage

    Add to your serverless.yml:

      plugins:
        - serverless-s3-deploy
    
      custom:
        assets:
          targets:
           - bucket: my-bucket
             files:
              - source: ../assets/
                globs: '**/*.css'
              - source: ../app/
                globs:
                  - '**/*.js'
                  - '**/*.map'
           - bucket: my-other-bucket
             empty: true
             prefix: subdir
             files:
              - source: ../email-templates/
                globs: '**/*.html'
    

    You can specify any number of targets that you want. Each target has a bucket and a prefix.

    bucket is either the name of your S3 bucket or a reference to a CloudFormation resources created in the same serverless configuration file. See below for additional details.

    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.

    Setting empty to true will delete all files inside the bucket before uploading the new content to S3 bucket. The prefix value is respected and files outside will not be deleted.

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

    $ sls s3deploy
    

    If you have defined multiple buckets, you can limit your deployment to a single bucket with the --bucket option:

    $ sls s3deploy --bucket my-bucket
    

    ACL

    You can optionally specificy an ACL for the files uploaded on a per target basis:

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

    The default value is private. Options are defined here.

    Content Type

    The appropriate Content Type for each file will attempt to be determined using mime-types. If one can't be determined, a default fallback of 'application/octet-stream' will be used.

    You can override this fallback per-source by setting defaultContentType.

      custom:
        assets:
          targets:
            - bucket: my-bucket
              files:
                - source: html/
                  defaultContentType: text/html
                  ...
    

    Other Headers

    Additional headers can be included per target by providing a headers object.

    See http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html for more details.

      custom:
        assets:
          targets:
            - bucket: my-bucket
              files:
                - source: html/
                  headers:
                    CacheControl: max-age=31104000 # 1 year
    

    Resolving References

    A common use case is to create the S3 buckets in the resources section of your serverless configuration and then reference it in your S3 plugin settings:

      custom:
        assets:
          targets:
            - bucket:
                Ref: MyBucket
              files:
                - source: html/
    
      resources:
        # AWS CloudFormation Template
        Resources:
          MyBucket:
            Type: AWS::S3::Bucket
            Properties:
              AccessControl: PublicRead
              WebsiteConfiguration:
                IndexDocument: index.html
                ErrorDocument: index.html
    

    You can disable the resolving with the following flag:

      custom:
        assets:
          resolveReferences: false
    

    Auto-deploy

    If you want s3deploy to run automatically after a deploy, set the auto flag:

      custom:
        assets:
          auto: true
    

    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}/*"
                ]
            }
        ]
    }
    

    Upload concurrency

    If you want to tweak the upload concurrency, change uploadConcurrency config:

    config:
      assets:
        # defaults to 3
        uploadConcurrency: 1
    

    Verbosity

    Verbosity cloud be enabled using either of these methods:

    Configuration:

      custom:
        assets:
          verbose: true
    

    Cli:

      sls s3deploy -v
    

    Keywords

    none

    Install

    npm i serverless-s3-deploy

    DownloadsWeekly Downloads

    8,053

    Version

    0.10.1

    License

    MIT

    Unpacked Size

    13.2 kB

    Total Files

    5

    Last publish

    Collaborators

    • funkybob