2016-04-07 139 views
5

嘗試在AWS lambda上爲Python中的服務Pusher創建部署包。AWS Lambda 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庫,因爲我沒有訪問LAMBDA機安裝依賴的這些TYS,我怎麼可能使這項工作?

+0

有關Linux發行版構建部署包的信息? – helloV

+0

Hi @jamesmpw,你在lambda中使用Pusher嗎?我在amazon-linux安裝了pusher,但是我仍然遇到這個問題:''errorType「:」ImportError「, 」errorMessage「:」沒有名爲cryptography.hazmat.bindings.openssl.binding的模塊「,你有沒有問題之前? –

+0

嗯,我記得那種,但我不記得我做了什麼來解決它。你使用的是virtualenv嗎? – jamesmpw

回答

2

您是否正在構建除Amazon Linux之外的其他發行版的部署包?嘗試在Amazon Linux

Python Extension Modules in AWS Lambda

+0

是的,我正在我的流浪盒上打包。哇很有趣。好的,讓我試試看。謝謝。 – jamesmpw

+0

哇,它做到了。好棒。那裏長達一個月的頭痛。只是無法正確處理導入錯誤和其他所有事情。非常感謝。你能否解釋爲什麼我無法在我的流浪盒上使用virtualenv創建軟件包?或者是我可以但我需要安裝libssl? – jamesmpw

+0

這不是一個答案,這是一個不明原因的魔術技巧的建議。 – fiatjaf

3

創建部署包我有同樣的問題,我必須真正瞭解什麼是暗示這裏的機會。 跟隨誤差結算對我們說,庫libssl.so不存在...

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

我希望它的存在。畢竟亞馬遜Linux是一個Linux發行版的libssl和應那裏。但我不知道...可能是它不能直接從lambda函數訪問。

爲了解決這個問題,我添加庫在zip束

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

我重新部署和誤差是不同的。找到了!

另一個圖書館錯過了。 libcrypto。我做了同樣的任務,現在我的lambda功能正在按預期工作

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

謝謝,這就是我一直在尋找的。讓我的Lambda運行! – Dan

+0

這太棒了!作爲腳註:我無法在miniconda3/envs/xxx/lib /中找到libssl.so.1.0.0。但我發現它在/ home/ubuntu/miniconda3/lib / – bigdatamann