我正在尝试将python-ldap与AWS Lambda一起使用。我从以下位置下载了tarball:https://pypi.python.org/pypi/python-ldap
和使用lambda(lambda_function.py)的代码
from ldap_dir.ldap_query.Lib import ldap
并将zip上传到Lambda。
我的目录结构是
ldap_dir -> ldap_query -> Lib -> ldap folder
ldap_dir -> lambda_function.py
我是不是错过了什么?
python-ldap构建在原生OpenLDAP库之上。尽管本文与python-ldap模块无关,但它描述了如何捆绑具有本机依赖关系的python包。
其概要如下:
- 使用AmazonLinux创建AmazonEC2实例
- 安装编译器包以及OpenLDAP开发人员包。
yum install -y gcc openldap-devel
- 创建虚拟环境:
virtualenv env
- 激活虚拟环境:
env/bin/activate
- 升级pip(我不确定这是否有必要,但我得到了一个没有这个的警告):
pip install --upgrade pip
- 安装python-ldap:
pip install python-ldap
- 使用以下代码创建一个处理程序Python脚本,例如
lambda.py
:
import os
import subprocess
libdir = os.path.join(os.getcwd(), 'local', 'lib')
def handler(event, context):
command = 'LD_LIBRARY_PATH={} python ldap.py'.format(libdir)
subprocess.call(command, shell=True)
- 实现LDAP功能,在本例中为
ldap.py
:
import ldap
print ldap.PORT
- 创建一个zip包,比方说
ldap.zip
:
zip -9 ~/ldap.zip ldap.py
zip -9 ~/ldap.zip lambda.py
cd env/lib/python2.7/site-packages
zip -r9 ~/ldap.zip *
cd ../../../lib64/python2.7/site-packages
zip -r9 ~/ldap.zip *
- 将zip下载到您的系统中(或将其放入S3存储桶中)。现在,您可以使用Lambda.handler作为函数名并使用zip文件作为代码来创建Lambda函数
我希望这能有所帮助。
再执行一步/检查以上解决方案:尽管如此,您可能会得到 No module named '_ldap'
,然后检查您在local/EC2上安装的python版本是否与lambda 上的Runtime相同