8

尝试在 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'})

我得到这个堆栈跟踪。

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 机器来安装这些依赖项,我该如何使它工作?

4

3 回答 3

8

我有同样的问题,我有机会真正理解这里的提示是什么。跟随错误正在清除告诉我们库 libssl.so 不存在......

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

我希望它在那里......毕竟 Amazon 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
于 2017-01-13T13:28:23.997 回答
3

您是否在其他发行版上构建部署包Amazon Linux?尝试在中创建部署包Amazon Linux

AWS Lambda 中的 Python 扩展模块

于 2016-04-07T12:08:11.103 回答
1

所以对我来说,解决方法是将库文件移动到根文件夹中,如下所示:

有问题的文件位于 PIL > .libs

在此处输入图像描述

于 2019-03-27T20:27:37.303 回答