2016-05-04 7 views
1

Я пытаюсь использовать python-ldap с AWS Lambda. Я скачал архив с: https://pypi.python.org/pypi/python-ldapAWS Lambda + Python-ldap

и кода для использования лямбды (lambda_function.py)

from ldap_dir.ldap_query.Lib import ldap 

и загрузил ЗИП Lambda.

где моя структура каталогов

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

Я пропускаю что-то?

ответ

3

python-ldap построен на основе собственных библиотек OpenLDAP. Этот article, хотя он и не связан с модулем ldap python, описывает, как связывать пакеты Python с родными зависимостями.

Контуры этого является следующее:

  • Создать экземпляр Amazon EC2 с Amazon Linux
  • установки пакетов компилятора, а также пакет для разработчиков OpenLDAP. yum install -y gcc openldap-devel
  • Создание виртуальной среды: virtualenv env
  • Активировать виртуальную среду: env/bin/activate
  • Upgrade пип (я не уверен, что это необходимо, но я получил предупреждение без этого): pip install --upgrade pip
  • Установить питон-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 *

  • Скачать почтовый индекс к вашей системе (или положить его в ведро S3). Теперь вы можете создать свою функцию Lambda с помощью lambda.handler в качестве имени функции и использовать zip-файл в качестве кода.

Надеюсь, это поможет.

+0

Я следовал за каждым шагом и странным образом получаю: невозможно импортировать модуль лямбда: нет модуля с именем лямбда. Я что-то упускаю? – user3089927