2016-05-04 82 views
1

私はAWS Lambdaでpython-ldapを使用しようとしています。ラムダ(lambda_function.py)AWS Lambda + Python-ldap

from ldap_dir.ldap_query.Lib import ldap 

を使用するhttps://pypi.python.org/pypi/python-ldap

とコードとラムダにzipファイルをアップロード:私はからtarballをダウンロードしました。

私のディレクトリ構造は、私が何かを

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

を逃しアムれる

答えて

3

python-ldapは、ネイティブOpenLDAPライブラリの上に構築されています。これはarticle - たとえpython ldapモジュールと無関係であっても - ネイティブの依存関係を持つPythonパッケージをどのように束ねるかを記述しています。

この概要は以下の通りです:

  • は、コンパイラパッケージなどのOpenLDAP開発パッケージをインストールし
  • アマゾンのLinuxでAmazon EC2インスタンスを作成します。 yum install -y gcc openldap-devel
  • は、仮想環境を作成します:python-LDAPをインストールしpip install --upgrade pip
  • env/bin/activate
  • アップグレードピップ(私はこれが必要であることを確認していないが、私はこれなしで警告を得た):virtualenv env
  • は、仮想環境をアクティブにします:pip install python-ldap
  • は、次のコードを使用して、例えば、lambda.pyをハンドラのPythonスクリプトを作成します。

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パッケージを作成し、のはを言わせて:

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ファイルをコードとして使用することができます。

これが役立ちます。

+0

私はすべてのステップを踏襲し、不思議なことに私は次のようになっています。モジュール 'lambda'をインポートできません:モジュールlambdaはありません。何か不足していますか? – user3089927

関連する問題