【问题标题】:AWS Lambda - removing Python packages to speed up deployment and executionAWS Lambda - 删除 Python 包以加速部署和执行
【发布时间】:2021-11-11 18:58:39
【问题描述】:

正在努力更新一个 AWS Lambda 函数,该函数依赖于最初由另一个程序员编写的 Flask / zappa。如果在 Lambda 中运行的脚本没有导入/使用 Python 模块,我可以从requirements.txt 中毫无问题地删除它们吗?

AWS 提供的例子file 似乎要求很少。我只是想确保 Cloudwatch 继续工作,并且我不会删除 AWS 隐式依赖的内容。

我正在考虑删除的一些包(因为不是由 Python 脚本导入的)包括:

  • durationpy
  • pyrsistent
  • placebo
  • pytz
  • pycparser
  • troposphere
  • boto3

即删除 pyarrowscikit-learn 将重新部署时间从 3 分钟缩短到 2 分钟。 AWS Lambda 还在更短的时间内使用更少的 RAM 来执行。

【问题讨论】:

    标签: python flask aws-lambda zappa


    【解决方案1】:

    很难说,因为依赖项因应用程序而异。

    据我所知,scikit-learn 是一个巨大的库,AWS 不使用它。但是,如果您的应用程序或应用程序中的其他包将其用作依赖项,则删除它可能会破坏您的应用程序。

    同样pyarrow 也被许多软件包使用。您的应用程序的某些包可能在内部使用它。

    我不确定,但 boto3 也可以删除,因为它在 AWS 默认情况下始终可用。但您可能希望保留它,因为您将需要它来在本地运行应用程序。

    对于所有其他包,我建议您使用 pipdeptree 创建包的依赖关系树 这将作为确定哪些可以删除的起点。

    【讨论】:

    • 谢谢,将使用pipdeptree。使用 pip 从 AWS shell 安装这些包。如果一个flask包依赖于pyrsistent,如果还没有安装,不会pip安装吗?
    • 部署 lambda 函数时,它只安装 requirements.txt 中存在的包。如果一个烧瓶包依赖它,安装或部署可能会失败。这就是为什么pip freeze 很重要。它可能在你的机器上工作,但你永远不知道它在部署时会如何表现
    猜你喜欢
    • 2021-01-17
    • 2016-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-29
    • 1970-01-01
    • 2018-07-03
    相关资源
    最近更新 更多