Trying to make a deployment package for the service Pusher in Python on AWS lambda.
When I run simple code like this
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'})
I'm getting this stack trace.
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
I believe libssl is a C library and since I don't have access to the Lambda machine to install these tys of dependencies, how could I make this work?
I had the same problem and I had the chance to really understand what is the hint here. The follow error is clearing say to us that the library libssl.so is not there...
ImportError: libssl.so.1.0.0: cannot open shared object file: No such file or directory
I would expect that it is there ... After all Amazon Linux is a linux distro and libssl should be there. But I do not know ... may be it is not directly accessible from the lambda function.
To solve the problem I added the library in the zip bundle
cd /usr/lib64
zip -u /tmp/lambda.zip libssl.so.1.0.0
I redeployed and the error was different. Eureka!
Another library was missed. The libcrypto. I did the same task and now my lambda function is working as expected
cd /usr/lib64
zip -u /tmp/lambda.zip libcrypto.so.1.0.0
Are you building the deployment package on a distro other than Amazon Linux
? Try creating the deployment package in Amazon Linux
Python Extension Modules in AWS Lambda
So for me the fix was to move the libraries files into the root folder like so:
The files in question were in PIL > .libs
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With