From 52eb0542770c4ab8e22bb62e90476446e98ec958 Mon Sep 17 00:00:00 2001 From: Emil Lerch Date: Wed, 6 Jan 2021 10:23:15 -0800 Subject: [PATCH] add lambda-layer implementation based on AL2/Python 3.8 --- .gitignore | 1 + Makefile | 22 +++++++++++++++++++--- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 4626976..7041533 100644 --- a/.gitignore +++ b/.gitignore @@ -139,3 +139,4 @@ cython_debug/ .container* .dockerfile* include/ +lambda.zip diff --git a/Makefile b/Makefile index 1323a23..f451146 100755 --- a/Makefile +++ b/Makefile @@ -91,9 +91,25 @@ container containers: $(CONTAINER_DOTFILES) echo "container: $(REGISTRY)/$$bin:$(TAG)"; \ done -lambda-layer: # @HELP creates a lambda layer zipfile "lambda.zip" suitable for uploading -lambda-layer: # Python - mostly not compiled, and deps that are, are linux/amd64 - @echo "todo" +lambda-package: # @HELP creates a lambda package zipfile "lambda.zip" suitable for uploading +lambda-package: lambda.zip # Python - mostly not compiled, and deps that are, are linux/amd64 + +SOURCES = $(foreach bin,$(BINS),$(bin).py) +lambda.zip: requirements.txt $(SOURCES) + @cid=$$($(DKR) create amazonlinux:2 /bin/sh -c ' \ + amazon-linux-extras enable python3.8; \ + yum install -y python38 zip; \ + alternatives --install /usr/bin/python python /usr/bin/python3.8 1; \ + alternatives --install /usr/bin/pip pip /usr/bin/pip3.8 1; \ + cd /src && pip install --target ./package -r requirements.txt; \ + rm lambda.zip 2>/dev/null; \ + zip -r -9 lambda.zip ./package; \ + zip -g lambda.zip *.py; \ + '); \ + $(DKR) cp . $$cid:/src/; \ + $(DKR) start -a $$cid; \ + $(DKR) cp $$cid:/src/lambda.zip .; \ + $(DKR) rm $$cid # Each container-dotfile target can reference a $(BIN) variable. # This is done in 2 steps to enable target-specific variables.