python - 我可以在 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 函数配合的压缩文件夹?
解决方案
这是 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.txt
pip 安装库并在 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
推荐阅读
- php - 提交后的PHP表单问题
- android - 在真机中安装flutter应用程序使ADB退出代码1
- angular - 哨兵附加数据
- highcharts - Highcharts导出自定义轴标签和字体大小:迁移后没有效果
- .net - 升级 .NET 框架 4.8 后(更新 KB4486105)服务总线网关卡在启动模式
- c# - Serilog 中间件无法在错误处理中正常工作
- javascript - Mat-table 性能问题 - 一旦表格加载,它会冻结页面
- ffmpeg - 我想用ffmpeg实现画中画功能,谁能帮帮我?
- java - Spring Boot 控制器检索 UserDetails
- reactjs - Github页面呈现用户页面而不是项目页面(使用reactjs)