AWS Lambda + Python-ldap

3
我正在尝试在AWS Lambda中使用python-ldap。我从https://pypi.python.org/pypi/python-ldap下载了tarball,以及用于lambda的代码(lambda_function.py)。请注意,不要删除HTML标签。
from ldap_dir.ldap_query.Lib import ldap

我已经将zip文件上传到Lambda。

我的目录结构如下:

ldap_dir -> ldap_query -> Lib -> ldap folder
ldap_dir -> lambda_function.py

我有什么遗漏吗?
2个回答

4

python-ldap是基于本地OpenLDAP库构建的。即使与python ldap模块无关,文章也描述了如何打包具有本地依赖项的Python软件包。

大纲如下:

  • 创建一个Amazon Linux的Amazon EC2实例
  • 安装编译器软件包以及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作为函数名称创建Lambda函数,并使用zip文件作为代码。

希望这能有所帮助。


我按照每一步都做了,但奇怪的是出现了以下错误:无法导入模块“lambda”:找不到模块。我漏掉了什么吗? - user3089927

0

针对上面的解决方案,还有一个步骤/检查: 如果你仍然遇到 No module named '_ldap'的问题,那么请检查你在本地/EC2上安装的Python版本是否与Lambda运行时版本相同。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接