如何在Python中将“ matplotlib”(Python库)部署为Lambda层?

时间:2019-07-09 20:19:06

标签: python amazon-web-services matplotlib aws-lambda aws-lambda-layers

我已经尝试在python / lib / python3.7 / site-packages / {matplotlib这里}中对zip进行压缩和结构化,但是它说无法导入matplotlib / init _ 中的ft2font .py

有趣的是,我的软件包中没有其他使用该名称的文件。我尝试在不同的操作系统上安装pip和pip3,但还是没有运气

1 个答案:

答案 0 :(得分:0)

我在these steps之后使用docker为AWS lambda创建了matplotlib层:

sudo docker pull amazonlinux
sudo docker run -it amazonlinux:latest /bin/bash

# inside container
yum -y install python37 zip
python3 -m venv python
source python/bin/activate
pip3 install matplotlib
deactivate 
rm -rf python/{bin,include,lib64,pyvenv.cfg} python/lib/python3.7/site-packages/{__pycache__,easy_install.py,numpy*,pip*,pkg_resources,setuptools*}
zip -r aws_lambda_python37_layer_matplotlib.zip python/

# in other terminal, copy file from container to host
CONTAINER_ID=$(sudo docker ps|grep amazonlinux|cut -d " " -f1)
sudo docker cp ${CONTAINER_ID}:/aws_lambda_python37_layer_matplotlib.zip .

# exit container
exit

请注意,由于单个lambda层的大小限制,此脚本会从该层中删除numpy。因此,您还需要在lambda函数中启用来自AWS的官方numpy / scipy层。

您也可以在小型EC2实例上在没有docker的情况下执行此操作。您可以在这里找到生成的压缩文件:https://github.com/ttor/aws_lambda_python37_layer_matplotlib