Skip to content

Deployment module for shipping @architect projects to the cloud

License

Notifications You must be signed in to change notification settings

architect/deploy

Repository files navigation

Architect serverless framework module for deploying applications to cloud infrastructure

GitHub CI status

Installation

npm i @architect/deploy
let deploy = require('@architect/deploy')

Requirements

You need to have the sam command-line utility available on your $PATH. Check out AWS' docs for instructions on how to install this.

API

deploy.direct({ isDryRun, srcDirs }, callback)

Deploys function code directly to one or more staging (or production) environment Lambdas by ommitting CloudFormation and directly updating code payloads. This is very useful for live debugging; changes made with direct deploys should be considered temporary.

deploy.sam({ verbose, production }, callback)

Deploys all infrastructure associated to your @architect app.

Set verbose to truthy to enable chatty mode. By default will only push to the staging environment unless production is truthy.

deploy.static({ bucket, credentials, fingerprint, prefix, prune, region, verbose, production }, callback)

All parameters are optional.

Pushes static assets from the public/ folder of @architect apps to S3, as defined by your @architect app's .arc file. Respects fingerprint (true or external), prefix, prune, and ignore params or @static pragma directives (more information available on the @static arc guide).

By default will only publish to the staging environment unless production is truthy. Set verbose to truthy to enable chatty mode.

aws-sdk caveat

Deploy requires aws-sdk; earlier versions included aws-sdk in peerDependencies, which prior to npm 7 would not automatically install aws-sdk. This is because Architect assumes you already have aws-sdk installed via Architect, or that it's available at runtime if you're using Deploy in a Lambda.

However, npm 7 (once again) changed the behavior of peerDependencies, now automatically installing all peerDependencies (instead of merely printing a reminder). This means any Lambdas that use Deploy would get a >50MB dependency payload if deployed on a machine with npm 7.

As such, please ensure aws-sdk is installed to your project or globally to your machine. We are sorry to make this a userland issue, but we feel this is preferable to unnecessarily and invisibly causing aws-sdk to be double-installed in Lambdas, negatively impacting coldstart times and adding to bug vectors.