Zips up and uploads build artifacts for serverless functions
npm install @beesley/push-function-zipsZips up and uploads build artifacts for serverless functions
Typically this module would be used from the command line. The command line args are described here.
| Argument | Description | Type | Required? |
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ---------- | ----------- |
| --help | Show help | \[boolean] | |
| --version | Show version number | \[boolean] | |
| --inputPath | The path to the lambda code and node\_modules | \[string] | \[required] |
| --include | An array of globs defining what to bundle | \[array] | \[required] |
| --exclude | An array of globs defining what not to bundle | \[array] | |
| --rootDir | An optional path within the zip to save the files to | \[string] | |
| --regions | A list of regions to upload the assets in | \[array] | \[required] |
| --buckets | A list of buckets to upload to (same order as the regions please) | \[array] | \[required] |
| --functionKey | The path/filename of the zip file in the bucket (you don't need to add the .zip extension, but remember to include a version string of some sort) | \[string] | \[required] |
| --layerKey | Tells the module to split out the node modules into a zip that you can create a lambda layer from | \[string] | |
| --versionSuffix | An optional string to append to layer and function keys to use as a version indicator | \[string] | |
| --platform | Which cloud provider we are uploading to (AWS or GCP) | \[string] | |
``shell`
npx @beesley/push-function-zips --inputPath './' --include 'dist/**' --regions 'eu-central-1' --buckets 'my-lambda-artefacts' --functionKey 'hello-function' --layerKey 'hello-function-dependencies' --platform 'AWS' --versionSuffix '1.0.0'
It is possible to use this module programmatically if you so desire.
`typescript
import { packageAndUpload } from '@beesley/push-function-zips';
await packageAndUpload({
inputPath: './',
include: ['dist/**'],
createLayer: true,
region: 'eu-central-1',
bucket: 'my-lambda-artefacts',
functionKey: 'hello-function',
layerKey: 'hello-function-dependencies',
});
`
#### Table of Contents
* Options
* Properties
* inputPath
* include
* exclude
* createLayer
* rootDir
* region
* bucket
* functionKey
* layerKey
* project
* platform
* packageAndUpload
* Parameters
Options to define an upload task
Type: {inputPath: string, include: Array<string>?, exclude: Array<string>?, createLayer: boolean?, rootDir: string?, region: string, bucket: string, functionKey: string, layerKey: string?, project: string?, platform: Platform}
#### Properties
* inputPath string include
* Array<string>? exclude
* Array<string>? createLayer
* boolean? rootDir
* string? region
* string bucket
* string functionKey
* string layerKey
* string? project
* string? platform
* Platform
#### inputPath
A pointer to where the files to upload are located
Type: string
#### include
An array of globs to include in the zip
#### exclude
An array of globs to exclude from the zip
#### createLayer
Whether or not to create a layer zip
Type: boolean
#### rootDir
A position within the zip to mount the files
Type: string
#### region
The AWS region to upload the assets to
Type: string
#### bucket
The name of the S3 bucket to upload to
Type: string
#### functionKey
The key name to upload the function zip as
Type: string
#### layerKey
The key name to upload the layer as
Type: string
#### project
The name of a google project to upload to
Type: string
#### platform
The target we're uploading to
Type: Platform
src/package-and-upload.ts:15-33
Packages up an asset based on globs and uploads zips to storage
#### Parameters
* arg` Options Configuration defining what to upload to where
Returns any {Promise