Helps build AWS Lambda zip files for Python projects.
Project description
py-lambda-packer
A Python AWS Lambda packager. This projects is very loosely based on the work in serverless-wsgi.
NOTICE: This project is a work in progress and should be considered unstable.
Features:
Written to run under both Python 3.6 and 2.7.
Generates Python 3.6 and 2.7 AWS Lambda Deployment Packages, user configurable.
AWS Lambda Deployment Packages are generated in isolated, temporary virtualenvs.
Per project configuration files to cut down on typing.
Can be easily be included and integrated into other projects as a library.
Usage
Installation
Latest stable
$ pip install py-lambda-packer
Bleeding edge
To install directly the bleeding edge version from GitHub:
$ pip install git+https://github.com/digitalrounin/py-lambda-packer.git@master#egg=py-lambda-packer
To install a specific tag or branch, replace master in the URL of the previous command with the desired name.
Quick start
Quick example command to generate py-lambda-package.zip for upload to AWS as a Lambda Function
$ py-lambda-packer --requirement requirements.txt --package . \
--python python3.6 --include LICENSE
Command help
Command help information:
$ py-lambda-packer --help
usage: py-lambda-packer [-h] [--config-file CONFIG_FILE] [--include INCLUDES]
[--exclude EXCLUDES] [--followlinks]
[--virtualenv-dir VIRTUALENV_DIR] [--keep-virtualenv]
[--python PYTHON] [--requirement REQUIREMENTS]
[--package PACKAGES] [--output OUTPUT]
[--archive-dir ARCHIVE_DIR] [--keep-archive]
[--generate-config]
optional arguments:
-h, --help show this help message and exit
--config-file CONFIG_FILE
location of configuration file (default: ./py-lambda-
packer.yaml)
--include INCLUDES glob pattern of what to include, multiple allowed
(default is empty)
--exclude EXCLUDES glob pattern of what to exclude, multiple allowed
(default is empty)
--followlinks follows symbolic links (default=False)
--virtualenv-dir VIRTUALENV_DIR
directory to build the virtualenv in (default is a tmp
dir)
--keep-virtualenv do not delete virtualenv build directory when set
(default=False)
--python PYTHON version of python to build virtualenv with (default is
python2.7)
--requirement REQUIREMENTS, -r REQUIREMENTS
pip requirements file to read, multiple allowed
(default is empty)
--package PACKAGES, -p PACKAGES
pip package index options, multiple allowed (default
is empty)
--output OUTPUT, -o OUTPUT
name of output zip file (default is py-lambda-
packer.zip)
--archive-dir ARCHIVE_DIR
directory to build the archive in (default is a tmp
dir)
--keep-archive do not delete archive build directory when set
(default=False)
--generate-config prints thedefault configuration to help create one
Project configuration
Project configuration file are named py-lambda-packer.yaml in the base directory of your project. Here is an example:
virtualenv:
python: python2.7
pip:
requirements:
- requirements.txt
packages:
- .
- Flask
packager:
target: py-lambda-package.zip
followlinks: true
includes:
- LICENSE
- static/**
- templates/**/*.html
excludes:
- static/**/*.tmp
To generate a configuration file, try the py-lambda-packer --generate-config command.
Todo list
Bump up code coverage limit back up to 80% and fix failing source files.
Add comments to configuration file created by py-lambda-packer --generate-config.
Document the py-lambda-packer API so that it can be imported as a library into other projects.
Make the colorlog Python package optional to allow py-lambda-packer to be imported into other projects as a library more cleanly.
Plugin support.
Support building packages with C and C++ Python extensions. Thinking out loud… Spin up an EC2 instance on the fly via something like HashiCorp Packer, build, package, destroy instance.
Clean up Windows compatibility. (I do not have access to a Windows based system, so any contributions here would be greatly appreciated.)
Support packaging for other Function as a Service (FaaS) platforms provided by : Azure, Google Cloud, etc.
References
For more information
Stackoverflow answer - The question pertains to AWS lambda function for Alexa, but the answer is generally relevant to packaging Python AWS Lambdas.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file py-lambda-packer-0.1.0.tar.gz.
File metadata
- Download URL: py-lambda-packer-0.1.0.tar.gz
- Upload date:
- Size: 13.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a5cdd79abab4bca660f5275a1707d3075edf71342a6845c5eddd5a45fdc4844f
|
|
| MD5 |
f02b5ccd47a78949712132bf0206b821
|
|
| BLAKE2b-256 |
be6ffc8045721882ab1a47d8c78f6098f923019060649985abf7056b0ebf9113
|
File details
Details for the file py_lambda_packer-0.1.0-py2.py3-none-any.whl.
File metadata
- Download URL: py_lambda_packer-0.1.0-py2.py3-none-any.whl
- Upload date:
- Size: 17.0 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
34bf4f16290e88c8855ab4d3a19b0d4380f5722e3deb7b51e99ede7b9d901803
|
|
| MD5 |
c99855706cb13cfba8b5946ad0882825
|
|
| BLAKE2b-256 |
15d95d1a32c7e9de3c20c72a2d8a41e23ffc861a1548db30d4484273fd1a3ced
|