【问题标题】:How to deal with large dependencies in AWS Lambda?如何处理 AWS Lambda 中的大量依赖项?
【发布时间】:2020-11-03 02:09:46
【问题描述】:

我正在使用 AWS Lambda,我需要部署的功能需要许多不同的包。使用serverless-python-requirements 生成的zip 文件为169.5MB,远大于50MB 的限制。我曾尝试使用 Lambda 层,但这并不能解决大小问题。

我也尝试将 zip 文件转储到 s3 存储桶中,但在调用该函数时它仍然太大而无法加载。我需要所有这些包,但我不确定如何部署它们。

我的requirements.txt 文件如下所示:

bs4==0.0.1
gensim==3.8.3
matplotlib==3.2.2
nltk==3.5
numpy==1.19.0
openpyxl==3.0.4
pandas==1.0.5
pyLDAvis==2.1.2
spacy==2.3.1
XlsxWriter==1.2.9

【问题讨论】:

  • 未压缩的大小是多少?如果未压缩小于 250MB,S3 方法应该可以工作。无论哪种方式,这对于 lambda 函数来说确实有很多依赖项。
  • Lambda 确实有很多限制。超过时有 AWS Batch、AWS Fargate 等执行方式
  • @jordanm 未压缩文件大小为 444MB。似乎很多来自问题中列出的依赖项的依赖项。感觉不需要太多包,但是pip安装的体积挺大的。
  • 这个列表很有意义。 pandas、numpy 和 matplotlib 是规模巨大的库。由于 lambda 的大小和执行时间限制,因此不常与 lambda 一起使用。

标签: python amazon-web-services amazon-s3 aws-lambda serverless


【解决方案1】:

最近,AWS 宣布支持 Lambda 的 EFS。阅读公告here。 EFS 或弹性文件系统是计算节点的 NFS 文件系统。阅读更多关于他们的信息here

现在,您基本上可以将网络存储附加到您的 lambda 函数。我个人使用它来加载超出 Lambda 文件存储限制的巨大参考文件。 有关演练,您可以参考 AWS 的 article。从文章中得出结论:

EFS for Lambda 允许您跨函数调用共享数据、读取大型参考数据文件并将函数输出写入持久和共享存储。配置 EFS 后,您向 Lambda 函数提供访问点 ARN,允许您读取和写入此文件系统。 Lambda 将函数实例安全地连接到同一可用区和子网中的 EFS 挂载目标。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-06
    • 1970-01-01
    • 1970-01-01
    • 2021-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多