2016-04-07 4 views
5

AWSラムダのPythonでサービスプッシャーのデプロイメントパッケージを作成しようとしています。私はこのAWSラムダPython libssl Cライブラリ

from pusher import Pusher 
def pusherTest(context, event): 
    mypusher = Pusher(app_id=u'***', key=u'***', secret=u'***') 
    mypusher.trigger('testchannel', 'testevent', {u'some': u'data'}) 

のような単純なコードを実行すると

私はこのスタックトレースを取得しています。

libssl.so.1.0.0: cannot open shared object file: No such file or directory: ImportError 
Traceback (most recent call last): 
    File "/var/task/Lambda.py", line 3, in pusherTest 
    mypusher = Pusher(app_id=u'***', key=u'***', secret='***') 
    File "/var/task/pusher/pusher.py", line 42, in __init__ 
    from pusher.requests import RequestsBackend 
    File "/var/task/pusher/requests.py", line 12, in <module> 
    import urllib3.contrib.pyopenssl 
    File "/var/task/urllib3/contrib/pyopenssl.py", line 54, in <module> 
    import OpenSSL.SSL 
    File "/var/task/OpenSSL/__init__.py", line 8, in <module> 
    from OpenSSL import rand, crypto, SSL 
    File "/var/task/OpenSSL/rand.py", line 12, in <module> 
    from OpenSSL._util import (
    File "/var/task/OpenSSL/_util.py", line 6, in <module> 
    from cryptography.hazmat.bindings.openssl.binding import Binding 
    File "/var/task/cryptography/hazmat/bindings/openssl/binding.py", line 15, in <module> 
    from cryptography.hazmat.bindings._openssl import ffi, lib 
ImportError: libssl.so.1.0.0: cannot open shared object file: No such file or directory 

私はのlibsslはCライブラリであると考えていると私は依存関係のこれらのTYSをインストールするには、ラムダ・マシンへのアクセスを持っていないので、どのように私はこの作品を作ることができますか?

+0

どのLinuxディストリビューションでデプロイメントパッケージをビルドしていますか? – helloV

+0

こんにちは@jamesmpw、ラムダでプッシャーを使いましたか?私はamazon-linuxにプッシャーをインストールしましたが、まだこの問題があります: '' errorType ":" ImportError "、 " errorMessage ":" cryptography.hazmat.bindings.openssl.bindingという名前のモジュールはありません "'問題は? –

+0

私はそれを覚えていますが、私はそれを修正するために何をしたのか思い出すことはできません。あなたはvirtualenvを使っていますか? – jamesmpw

答えて

2

Amazon Linux以外のディストリビューションに展開パッケージを構築していますか?私は同じ問題を抱えていたと私は本当にここにヒントが何であるかを理解する機会があったAmazon Linux

Python Extension Modules in AWS Lambda

+0

Yah私は迷惑メールボックスにパッケージを構築しています。うわー、とても面白いです。私はそれを試してみましょう。ありがとうございました。 – jamesmpw

+0

うわーでした。非常にすばらしい。一ヶ月の長い頭痛。インポートエラーと他のすべての間でそれを正しく取得できませんでした。どうもありがとうございます。私はあなたの迷惑メールボックスにvirtualenvを使ってパッケージを作成できない理由を説明できますか?それとも、libsslをインストールする必要がありますか? – jamesmpw

+0

これは答えではない、これは説明できない魔法のトリックの提案です。 – fiatjaf

3

に展開パッケージを作成してみてください。すべてのアマゾンのLinuxは、Linuxディストリビューションとのlibsslされた後のフォローエラーが...ライブラリlibssl.soがないことを私たちに言う

ImportError: libssl.so.1.0.0: cannot open shared object file: No such file or directory 

をクリアしている 私は...それがあることを期待するべきですそこ。しかし、わかりません...ラムダ関数から直接アクセスできないかもしれません。

は、問題を解決するために、私は再デプロイのzipバンドル

cd /usr/lib64 
zip -u /tmp/lambda.zip libssl.so.1.0.0 

にライブラリを追加し、エラーが異なっていました。ユーレカ!

別のライブラリが見逃されました。 libcrypto。私は同じ仕事をして、今では私のラムダ機能が期待通りに動作しています

cd /usr/lib64 
zip -u /tmp/lambda.zip libcrypto.so.1.0.0 
+0

ありがとう、これは私が探していたものです。私のラムダが走っている! – Dan

+0

これは素晴らしいです!脚注として:miniconda3/envs/xxx/lib /にlibssl.so.1.0.0が見つかりませんでした。しかし、私は/ home/ubuntu/miniconda3/lib / – bigdatamann