lambda
lambda copied to clipboard
Build Lambda deployment packages faster with Docker
Build AWS Lambda deployment packages with Docker
Update
Amazon now provides images for Lambda runtimes on Docker Hub. See amazon/aws-sam-cli-emulation-image-python. It is important to use this specific set of images to avoid missing binaries, which can occur with similar Python 3.x containers from amazon/.
Blog post (includes tips on reducing package size)
An easier way to build AWS Lambda deployment packages — with Docker instead of EC2
Why?
- Logging in to EC2 and creating a deployment package by hand is clumsy
- Instead, script package creation around the
amazonlinux
image (blessed as an official repository and linked from this AWS user guide)
Tags
-
build
- introduced to build wheels per #2. In theory this should not affect how the environment functions, but in practice use image id823205fae3ed
if you want to be as close to the official lambda environment as possible. On 9/1/21 thebuild
tag has been updated to support the Python3.8 runtime (only).
Example: Python 3.8 deployment package
docker pull quiltdata/lambda
docker run --rm -v $(pwd)/create_table:/io -t \
-e GIT_REPO quiltdata/lambda \
bash /io/package.sh
- Mount
/io
as a docker volume-
/io
should containpackage.sh
and your lambda code \ -
/io
is where the deployment package, lambda.zip, is written \
-
- Pass environment variables with
-e
-
--rm
so that, for example, secure envs aren't written to disk
Customize
Modify package.sh
to suit your own purposes.
Build container
docker build -t quiltdata/lambda .
Clone private GitHub repo in container
Use a personal access token:
git clone https://${TOKEN}@github.com/USER/REPO