首页 > 解决方案 > 我可以在 Windows 中压缩与 AWS Lambda 兼容的文件夹吗?

问题描述

我有一个 Catboost 模型,我使用 Python 构建并坚持(通过 pickle),我正在尝试使用 AWS Lambda 部署这个模型。我的模型和 lambda_function.py 脚本还有另外 2 个 Python 脚本:functions.py 和 features.py。Functions 脚本包含用于解析 (JSON) 有效负载、生成预测和返回 JSON 对象的函数。features 脚本包含列表、字典等,以使解析尽可能高效。这些脚本总共有 3 个依赖项:numpy、pandas 和 catboost。

在 AWS Lambda 中,这些依赖项和模型中的每一个都需要它们自己的“层”。幸运的是,lambda 内置了 numpy,所以我不需要为此创建一个层。但是,对于 pandas 和 Catboost,我需要生成所有模块的文件/目录,压缩它们,并将它们添加到 S3 存储桶中,以便它们可以用作层。

我必须在 Windows 机器上执行此操作,而我的工作计算机(VDI 和 EC2)不允许我在 Virtual Box 上安装和运行 Ubuntu。

如何在 Windows 环境中创建与 (Linux) AWS Lambda 函数配合的压缩文件夹?

标签: pythonlinuxwindowsamazon-web-servicesaws-lambda

解决方案


这是 docker 的完美用例。我运行 MacOS 并遇到与任何需要本机二进制文件的 Python 依赖项相同的问题,我无法在我的 Mac 上构建它们并期望它们在 AWS Linux 运行时环境中工作

Amazon 有一个与 lambda 运行时环境匹配的 docker 容器,因此您可以使用它来构建您的层。

您要使用的 docker 映像是lambci/lambda,特别是带有前缀的标签,build-python因为它们具有各种 python 环境(2.7、3.6、3.7)。

假设您有一个requirements.txt想要 pip 安装到您的层中的所需库,这里有一个示例 docker 命令,它运行在与requirements.txtpip 安装库并在 AWS Lambda 运行时构建它们相同的目录中。

docker run --rm -v `pwd`:/var/task:z lambci/lambda:build-python3.6 python3.6 \
    -m pip --isolated install -t python -r requirements.txt

推荐阅读