【问题标题】:How to deploy 'matplotlib', the Python library, as a Lambda Layer in AWS?如何将 Python 库“matplotlib”部署为 AWS 中的 Lambda 层?
【发布时间】:2019-07-09 20:19:06
【问题描述】:
我尝试在 python/lib/python3.7/site-packages/{matplotlib here} 中压缩和构建 zip,但它说无法导入 matplotlib/init_ 中的 ft2font .py
有趣的是,我的包中没有其他具有该名称的文件。我在不同的操作系统上尝试了 pip install 和 pip3 install 但没有运气
【问题讨论】:
标签:
python
amazon-web-services
matplotlib
aws-lambda
aws-lambda-layers
【解决方案1】:
我在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 层。
您也可以在没有 docker 的情况下在小型 EC2 实例上执行此操作。您可以在此处找到生成的 zip:https://github.com/ttor/aws_lambda_python37_layer_matplotlib