lambda icon indicating copy to clipboard operation
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?

Tags

  • build - introduced to build wheels per #2. In theory this should not affect how the environment functions, but in practice use image id 823205fae3ed if you want to be as close to the official lambda environment as possible. On 9/1/21 the build 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 contain package.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