AWS Lambda Python libssl C 库
AWS Lambda Python libssl C Library
正在尝试在 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 机器来安装这些 tys 依赖项,我怎样才能让它工作?
您是否在 Amazon Linux
以外的发行版上构建部署包?尝试在 Amazon Linux
中创建部署包
我遇到了同样的问题,我有机会真正理解这里的提示是什么。
后续错误正在清除,告诉我们库 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
所以对我来说,解决方法是将库文件移动到根文件夹中,如下所示:
有问题的文件在 PIL > .libs
正在尝试在 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 机器来安装这些 tys 依赖项,我怎样才能让它工作?
您是否在 Amazon Linux
以外的发行版上构建部署包?尝试在 Amazon Linux
我遇到了同样的问题,我有机会真正理解这里的提示是什么。 后续错误正在清除,告诉我们库 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
所以对我来说,解决方法是将库文件移动到根文件夹中,如下所示:
有问题的文件在 PIL > .libs