AWS - Lambda - 层与需求.txt

问题描述 投票:0回答:1

设置用 python 编写的 lambda 时,您可以使用 requests.txt 文件或通过设置层来包含库(json、pymysql、pandas 等)。有谁知道哪个选项在运行时运行得更快?

例如,requirements.txt 是否会导致 pip install 执行(启动缓慢),而层“已经有库”,因此启动速度更快? (但话又说回来,如果是这种情况,并且您想要最新版本,AWS 如何实现这一点?它必须运行 pip install。)

我知道层的其他好处(核心重用),我的问题仅限于上述。

谢谢!

aws-lambda requirements.txt aws-lambda-layers
1个回答
0
投票

您问题中的信息不正确。您不能在 Lambda 函数中包含requirements.txt 文件。 AWS Lambda 不会查看您的 rquirements.txt 文件并对其执行任何操作。 AWS Lambda 不会仅仅因为您捆绑了requirements.txt 文件而为您下载并安装依赖项。 AWS Lambda 希望所有依赖项都包含在 Lambda 函数的部署包或附加的 Lambda 层中。

例如,requirements.txt 是否会导致 pip install 执行(启动缓慢),而层“已经有库”,因此启动速度更快? (但话又说回来,如果是这种情况,并且您想要最新版本,AWS 如何实现这一点?它必须运行 pip install。)

AWS Lambda 实际上并没有做任何这些事情。所以这不是问题。

您的实际选择是附加 Lambda 层,或者在构建 Lambda 函数时在本地安装您的requirements.txt 文件中的所有需求,以及在函数的部署 zip 文件中包含所有这些依赖项。


我知道层的其他好处(核心重用),我的问题仅限于上述。

代码重用是层的主要好处。通常,如果这些依赖项包含二进制可执行文件(必须为 AWS Linux 构建才能在 AWS Lambda 上运行),那么在 Python Lambda 部署中包含某些依赖项可能会很困难。 Pandas 是一个常见的 Python 库,您会在其中遇到此问题。因此,将该依赖项构建为层一次,然后重用它,甚至将该依赖项拉入其他人已经为您构建的层,是使用 Lambda 层的常见原因。

© www.soinside.com 2019 - 2024. All rights reserved.