2016-05-04 11 views
1

Ich versuche, Python-ldap mit AWS Lambda zu verwenden. Ich habe die Tarball aus: https://pypi.python.org/pypi/python-ldapAWS Lambda + Python-ldap

und Code-Lambda (lambda_function.py)

from ldap_dir.ldap_query.Lib import ldap 

und hochgeladen die Zip-Lambda zu verwenden.

wo meine Verzeichnisstruktur

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

Fehle ich etwas aus?

Antwort

3

python-ldap baut auf nativen OpenLDAP-Bibliotheken auf. Diese article - obwohl nicht mit dem Python ldap-Modul verbunden - beschreibt, wie Python-Pakete, die native Abhängigkeiten haben, gebündelt werden.

Der Umriss hierfür ist die folgende:

  • eine Amazon EC2-Instanz mit Amazon Linux erstellen
  • Compiler Pakete installieren, sowie die OpenLDAP-Entwickler-Paket. yum install -y gcc openldap-devel
  • Erstellen einer virtuellen Umgebung: virtualenv env
  • Aktivieren Sie die virtuelle Umgebung: env/bin/activate
  • Upgrade-pip (Ich bin nicht sicher, dass dies notwendig ist, aber ich habe eine Warnung ohne diese): pip install --upgrade pip
  • Installieren python-ldap : pip install python-ldap
  • einen Handler Python-Skript erstellen, zum Beispiel lambda.py mit dem folgenden Code:

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)

  • Implementieren Sie Ihre LDAP-Funktion, in diesem Beispiel ldap.py:

import ldap 
 

 
print ldap.PORT

  • eine Zip-Paket erstellen, sagen wir mal 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 *

  • die Zip auf Ihr System herunterladen (oder es in einen S3 Eimer gelegt). Jetzt können Sie Ihre Lambda-Funktion mit lambda.handler als Funktionsnamen erstellen und die Zip-Datei als Code verwenden.

Ich hoffe, das hilft.

+0

Ich folgte alles Schritt für Schritt und seltsam bekomme ich: Kann Modul 'Lambda' nicht importieren: Kein Modul namens Lambda. Fehle ich etwas? – user3089927