【问题标题】:How do we import Pandas, Spacy, Numpy, NLTK in a single AWS lambda function using Python 3.6?我们如何使用 Python 3.6 在单个 AWS lambda 函数中导入 Pandas、Spacy、Numpy、NLTK?
【发布时间】:2020-04-26 03:40:07
【问题描述】:

我的 AWS Lambda 函数中使用了以下库:

pytz/     
nltk/                 
nltk-3.2.5/          
numpy/
psycopg2/
pandas/  
spacy/

但是,当我在 AWS S3 上压缩和上传这些库以及我的代码并将 S3 zip 链接到 Lambda 函数时,它会给出以下错误:

解压后的大小必须小于 262144000 字节 当您尝试将压缩文件保存在 lambda 上时会发生这种情况

我的 Zip 大小为 62 Mb,AWS Lambda 仅支持每个 lambda 函数 50MB。

AWS 有没有更好的方法来实现这一点?

【问题讨论】:

    标签: python aws-lambda


    【解决方案1】:

    从这篇博文看来,“真正的”限制是 250MB:

    只是引用文章,似乎你可以做的是首先将zip文件上传到s3:

    aws s3 cp ./ s3://limits-test-foobar-bucket/ --recursive --exclude "*" --include "*.zip"

    然后也使用 aws cli 更新 lambda 函数:

    aws lambda update-function-code --function-name limits-test --region us-east-1 --s3-bucket limits-test-foobar-bucket --s3-key 100MB.zip

    希望有帮助!

    【讨论】:

      【解决方案2】:

      您可以使用“Lambda 层”作为解决方法: https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html

      您所要做的就是将您的库(例如 spacy)打包到一个 lambda 层中。然后,您必须将该层附加到 lambda 函数,以便 lambda 能够使用该层中的库。存在大小限制,但您可以部署多个层。您可以在多个 lambda 中使用同一层! 如果出现spacy,我建议从/spacy/lang 目录中删除不必要的语言!

      分层是保持干燥的好方法(不要重复自己)

      【讨论】:

        猜你喜欢
        • 2018-09-06
        • 2018-04-25
        • 1970-01-01
        • 2019-06-23
        • 2019-12-05
        • 1970-01-01
        • 2017-07-11
        • 2019-12-23
        • 2017-09-21
        相关资源
        最近更新 更多