ZIP en exécutant PIP dans le conteneur Docker de Lambda. Un script qui le publie en tant que couche AWS Lambda.
chmod + x publish.sh```
--Exécuter en spécifiant les paramètres (param1 = nom-couche, param2 = nom-lib, param3 = version-lib, param4 = version-python)
./publish.sh requests-python37 requests 2.22.0 python3.7
Ce n'est pas facile à faire, mais ça marche. .. .. S'il vous plaît lorsque vous ne voulez pas polluer l'environnement à portée de main.
#
# Require: docker installed.
# Require: aws config for publishing lambda layer
#
# 1. in container, pip install python liblary and zip,
# 2. publish to aws layer
#
# Usage: param1=layer-name, param2=lib-name, param3=lib-version, param4=python-version
# ex ```./publish.sh requests-python37 requests 2.23.0 python3.7```
layername=$1 # requests-python37
lib=$2 # requests
ver=$3 # 2.23.0
env=$4 # python3.7
zip=$lib-$ver-$env.zip # requests-2.23.0-python3.8.zip
echo packing: $zip
# Prepare
mkdir -p build
rm -rf build/* # Clean up
# pip and zip in docker.
docker run --rm -it \
--volume `pwd`/build:/tmp/build \
--workdir /tmp/build \
lambci/lambda:build-$env \
bash -c "pip3 install $lib==$ver -t /tmp/build/python && zip -qr $zip python/ && rm -rf /tmp/build/python && chown -R `id -u`:`id -g` ./*"
echo packed : build/$zip
aws lambda publish-layer-version \
--layer-name $layername \
--zip-file fileb://`pwd`/build/$zip \
--description $zip \
--compatible-runtimes $env
Recommended Posts