Easily provision Layers for AWS Lambda using Serverless Components.
$ npm install -g @serverless/components
$ mkdir my-layer && cd my-layer
in the case of a nodejs layer, the directory should look something like this:
|- code |- index.js # the root of your library |- package.json # the main property should point to index.js in this example |- serverless.yml |- .env # your development AWS api keys |- .env.prod # your production AWS api keys
.env files are not required if you have the aws keys set globally and you want to use a single stage, but they should look like this.
# serverless.yml name: my-layer stage: dev myLayer: component: "@serverless/aws-lambda-layer" inputs: name: my-layer description: My Serverless Layer code: ./code regoin: us-east-1 runtimes: [ 'nodejs8.10' ] # the default is undefined (aka. all runtimes supported) # a path prefix to all the files that would be included in the package # this example would package a valid node dependency # since this is the path expected by aws prefix: nodejs/node_modules # if you'd like to include any files outside the codebase include: - ../external/file.js # specifying an existing deployment bucket would optimise deployment speed # by using accelerated multipart uploads bucket: my-deployment-bucket
layer (master)$ components myLayer › outputs: name: 'my-layer' description: 'My Serverless Layer' arn: 'arn:aws:lambda:us-east-1:552760238299:layer:my-layer:1' 29s › dev › my-layer › done layer (master)$
For a real world example of how this component could be used, take a look at how the aws-lambda component is using it.
New to Components?
Checkout the Serverless Components repo for more information.