Build AWS Lambda deployment packages with Docker
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
amazonlinuximage (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 id823205fae3edif you want to be as close to the official lambda environment as possible.
Example: Python 3.6 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
/ioas a docker volume/ioshould containpackage.shand your lambda code \/iois where the deployment package, lambda.zip, is written \
- Pass environment variables with
-e --rmso 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