Skip to main content

Download AWS Lambda Layers.

Project description

layerd

Mount, Download, and Inspect Lambda Layers in seconds.

Lambda Layers created by a third party?

Want the contents locally?

Use layerd.

Table of Contents

  1. Inspiration
  2. Installation
  3. Usage
  4. License
  5. Contributions

Inspiration

Firstly, What is a Lambda Layer?

A Lambda Layer is an archive containing [...] code.
When you include a layer in an [AWS Lambda] function,
the contents are extracted to [...] the execution environment.

As defined by an AWS Compute blog.

Ok, then what does this layerd library do?

Several steps of Layer inspection are automated here.

Currently, a Layer is deployed to AWS under 1) a Name and 2) a Version. Once a version is deployed (possibly by a Third-Party), how can you then see the contents of that layer?

One way would be to fumble around with the contents of the /opt directory in a lambda function. The equivalent to trying to lick your elbow.

Another way, only possible if created by a First-Party, would be to head to AWS, login, navigate to Lambda's page, enter the Layer subsection, choose a version, and press Download. From there, head to your local system, and unzip the contents. Of course the preferred way, but is greatly limited to solely First-Parties and takes several minutes of navigation and login to a 2FA system.

layerd automates the latter. layerd pings AWS Lambda, with the exact ARN of the Layer Version wanted, downloads, unzips, and mounts the contents locally. Within seconds.

Not a bad way to save a few minutes.

Installation

$ pip3 install layerd

Usage

CLI

The layerd script is automatically added to your OS's Path. Call it with an ARN of a public lambda layer to mount the layer.

$ layerd <ARN>

Example:

$ layerd arn:aws:lambda:us-east-1:ACC:layer:LAYER-NAME:221

Layer:    LAYER-NAME
Region:   us-east-1
V:        221

Created: ./LAYER-NAME-221/

And pulled, unzipped, and mounted is the contents of the Lambda Layer.

$ tree
.
└── LAYER-NAME-221/
    └── ...

Python Inline

The layerd module has a layerd(arn: str) function to mount a Lambda Layer.

>>> from layerd import layerd

>>> layerd('arn:aws:lambda:us-east-1:ACC:layer:LAYER-NAME:335')
Layer:    LAYER-NAME
Region:   us-east-1
V:        335

Created: ./LAYER-NAME-335/

Boom. You've mounted the Layer locally.

License

layerd is licensed under the MIT License. See LICENSE for more.

Contributions

Pull Requests for modifications are always welcome. Forks are preferred over Branches.

Want to become a maintainer? Submit 5 PRs, then we'll talk.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

layerd-2023.4.24.12.34.tar.gz (6.0 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page