[英]AWS Lambda in Python: Import parent package/directory in Lambda function handler
[英]Python package management for AWS lambda function
我正在努力了解如何最好地管理python软件包以压缩AWS Lambda函数。
在我的项目文件夹中,我有许多.py
文件。 作为构建过程的一部分,我将它们压缩并使用AWS API创建和发布我的lambda函数,该函数在该调用中提供了zip文件。
因此,我认为我需要将lambda所依赖的所有软件包都放在我的项目文件夹中。
考虑到这一点,我将pip
称为:
pip install -t . tzlocal
这似乎使我的项目文件夹充满了很多东西,我不确定是否需要将其全部压缩到我的lambda函数部署中,例如
.\pytz
.\pytz-2018.4.dist-info
.\tzlocal
...
...
第一个问题-是否需要将所有这些东西都压缩到我的lambda中?
如果没有,我如何获得一个打包文件,该打包文件仅提供进入zip文件所需的位?
来自.Net / Node背景-使用前一个Nu Nu获取我的包,它进入一个不错的packages
文件夹,其中仅包含我需要的.dll
文件,然后将其引用到我的项目中。
如果我确实需要所有这些文件,是否可以将它们“整洁”地放置在更整洁的位置(例如在packages文件夹中)?
最后,有没有办法下载我实际需要的二进制文件? 我在这里已经读到问题了,Lambda函数将需要与我在桌面开发环境(Windows)上使用的二进制文件不同的二进制文件,因此也不确定如何解决该问题。
例如, numpy
使用的二进制库应在AWS Linux上编译以在lambda上运行。 我发现本教程很有用( https://serverlesscode.com/post/deploy-scikitlearn-on-lamba/ )。 它甚至有使用Docker容器的较新版本,因此您不需要EC2实例进行编译,并且可以在本地进行所有操作。
至于软件包:AWS文档说将所有内容安装到根目录,但是您可以将它们全部安装在./packages
目录中,如果有lambda处理程序代码,则可以将其附加到开头的路径中
import os
import sys
cwd = os.getcwd()
package_path = os.path.join(cwd, 'packages')
sys.path.append(package_path)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.