2016-04-07 40 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