AWS Lambda Python libssl C库

jam*_*mpw 7 python amazon-web-services libssl aws-lambda

尝试在AWS lambda上为Python中的Pusher服务部署包.

当我运行像这样的简单代码

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'})
Run Code Online (Sandbox Code Playgroud)

我得到了这个堆栈跟踪.

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
Run Code Online (Sandbox Code Playgroud)

我相信libssl是一个C库,因为我无法访问Lambda机器来安装这些依赖项,我怎么能让它工作呢?

Ale*_*lex 5

我遇到了同样的问题,并且有机会真正了解了这里的提示。遵循错误正在清除告诉我们,库libssl.so不存在...

ImportError: libssl.so.1.0.0: cannot open shared object file: No such file or directory
Run Code Online (Sandbox Code Playgroud)

我希望它在那里...毕竟Amazon Linux是linux发行版,而libssl应该在那里。但我不知道...可能无法从lambda函数直接访问。

为了解决该问题,我在zip捆绑包中添加了库

cd /usr/lib64
zip -u /tmp/lambda.zip libssl.so.1.0.0
Run Code Online (Sandbox Code Playgroud)

我进行了重新部署,但错误有所不同。尤里卡!

错过了另一个图书馆。libcrypto。我做了同样的任务,现在我的lambda函数正在按预期工作

cd /usr/lib64
zip -u /tmp/lambda.zip libcrypto.so.1.0.0
Run Code Online (Sandbox Code Playgroud)