【问题标题】: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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多