有没有人有一个完全编译好的pandas版本,与AWS Lambda兼容?
在搜索了几个小时后,我似乎找不到我想要的东西,而且这方面的文档不存在。
我需要在Lambda函数中访问该软件包,但是我无法成功地将该软件包编译为适用于Lambda函数的软件包。
如果无法编译,是否有人可以提供可重现的步骤来创建二进制文件?
不幸的是,我尚未能够成功复制任何与此相关的指南,因为它们大多将pandas与我不需要的scipy组合起来,并增加了额外的负担。
有没有人有一个完全编译好的pandas版本,与AWS Lambda兼容?
在搜索了几个小时后,我似乎找不到我想要的东西,而且这方面的文档不存在。
我需要在Lambda函数中访问该软件包,但是我无法成功地将该软件包编译为适用于Lambda函数的软件包。
如果无法编译,是否有人可以提供可重现的步骤来创建二进制文件?
不幸的是,我尚未能够成功复制任何与此相关的指南,因为它们大多将pandas与我不需要的scipy组合起来,并增加了额外的负担。
我认为你应该能够使用最近的pandas版本(或者很可能是你机器上的版本)。你可以像这样自己创建一个包含pandas的lambda包:
首先找到pandas包在你的机器上的安装位置,即打开Python终端并输入
import pandas
pandas.__file__
这应该会打印出类似于'/usr/local/lib/python3.4/site-packages/pandas/__init__.py'
的东西。
'/usr/local/lib/python3.4/site-packages/pandas'
)复制pandas文件夹,并将其放入您的存储库中。像这样使用pandas打包Lambda代码:
zip -r9 my_lambda.zip pandas/
zip -9 my_lambda.zip my_lambda_function.py
你还可以将你的代码部署到 S3 并使 Lambda 使用来自 S3 的代码。aws s3 cp my_lambda.zip s3://dev-code//projectx/lambda_packages/
在一些尝试和大量谷歌搜索后,我能够使所有的东西都正常工作,并设置了一个可以在将来克隆的存储库。
要点:
Github 存储库: https://github.com/moesy/AWS-Lambda-ML-Microservice-Skeleton
这个仓库mthenw/awesome-layers列出了一些公开可用的 AWS Lambda layer。
特别地,keithrozario/Klayers包含pandas和numpy,并且截至今日已更新到pandas 0.25。
它的 ARN 是arn:aws:lambda:us-east-1:113088814899:layer:Klayers-python37-pandas:1
我知道这个问题几年前就被问过了,而当时Lambda处于不同的阶段。
最近我也遇到了类似的问题,我想把最新的解决方案添加到这里,以备未来遇到相同问题的用户参考。
事实证明,亚马逊在re:Invent 2018中发布了layers的概念。 这是一个很好的功能。 Medium上的这篇文章比我在这里描述得更好:Creating New AWS Lambda Layer For Python Pandas Library
my_lambda_deployment_package.zip
├───lambda_function.py
├───numpy
│ ├───[subfolders...]
├───pandas
│ ├───[subfolders...]
└───[additional package folders...]
lambda_function.py
文件和各种包文件夹一起在.zip文件的根目录下吗? - ashtoniumunzip filename.whl
(Linux/MacOS)python/lib/python3.7/site-packages/
(将3.7替换为您选择的版本)python
pip3 install PACKAGE_NAME -t .
在其中安装软件包(无需虚拟环境)。有些软件包比其他软件包更容易,有些则更棘手。例如,Psycopg2要求您仅移动两个(截至本文撰写时)软件包文件夹中的一个。我开始维护一个GitHub仓库,以便轻松快速地访问图层。https://github.com/kuharan/Lambda-Layers
我一直在为我的开源项目和其他事情使用这些图层。