Automation for Python 3 packaging and deployment on AWS Lambda
Project description
The Python Lambda Logistics (pll) library is designed to assist with an automated deployment for Python 3 AWS Lambda functions.
As you will no doubt discover, as soon as you require more than the basic libraries, you need to start creating what are known as ‘deployment packages’ (zip files with all dependencies) for pushing even basic scripts up to AWS.
These packages require that the libraries are compiled for amazon’s version of linux (which is executing the code on your behalf).
Not helpful if, like me, your development machine isn’t running AWS Linux…
Some of the main libraries this has helped me so far with packaging:
SQLAlchemy
Pandas
NumPy
Underlying Process
pll aims to simplify the above by automating the build of your requirements.txt file in a Docker image of awslinux.
Create working directories in your current project
Build – contains compiled site-packages for future re-use
Dist – outputted lambda zip for upload to AWS
Check for a local docker image of saracen9/python-lambda or pull down
Mount the following locations into the docker image
Build –> /tmp/app/psite-packages
Dist –> /tmp/app/zipped-package
YourAppplicationRoot –> /app
Run the container and compile
Shutdown and £profit
(Opt) push code to AWS (Coming soon)
The original Dockerfile used to create the image is contained within the package source code for those who want to hack their own.
Usage
To manually run and configure the docker container use the below command.
docker run --rm --name py-lamb-compiler \
-v ~/my/app:/app \
-v ~/my/app/dist:/tmp/app/dist \
-v ~/my/app/build:/tmp/app/build \
saracen9/python-lambda
Alternatively install the library and put a pll.yaml in the root of your application.
packaging:
app_root: '/my/app'
build_path: '/my/app/build'
dist_path: '/my/app/dist'
You can then run python -m pll and package the application from any script. As an additional option pass in the --config switch to define your own config file.
In addition, relative paths to the cwd are accepted. These are then converted to absolute paths at runtime E.g.
packaging:
app_root: '' # current directory
build_path: 'build/' # current directory/build
dist_path: 'dist/' # current directory/dist
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
File details
Details for the file Python Lambda Logistics-0.0.2b0.tar.gz
.
File metadata
- Download URL: Python Lambda Logistics-0.0.2b0.tar.gz
- Upload date:
- Size: 4.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c016756f1b61cc3368a31e3b4748cac62d37181c7b029bd3d5a2ec7ddf6bf05b |
|
MD5 | a88935aa54f7b2809575225c97c51ec1 |
|
BLAKE2b-256 | 99f4852c30ea614e436fe870f4834f76c03516600c89e447d56fb9942c1b59a0 |
File details
Details for the file Python_Lambda_Logistics-0.0.2b0-py3-none-any.whl
.
File metadata
- Download URL: Python_Lambda_Logistics-0.0.2b0-py3-none-any.whl
- Upload date:
- Size: 4.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a7edcac83c8424abc29999585de51b479d0c9f815305387fcb0dfc5bc7abadd4 |
|
MD5 | eb86eb8e3bad060f3f6f0f3d0bcaa0e2 |
|
BLAKE2b-256 | 764401d00fddd3440458adf428c7dea9e0aa60b43ec106a39fb029439b423087 |