9

I am 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 types of dependencies, how could I make this work?

7
  • On what Linux distro are you building the deployment package? Commented Apr 7, 2016 at 12:04
  • Hi @jamesmpw, Did you use Pusher in lambda? I installed pusher in the amazon-linux, but I still have this problem: "errorType": "ImportError", "errorMessage": "No module named cryptography.hazmat.bindings.openssl.binding", Did you have this problem before ? Commented Sep 12, 2016 at 21:48
  • Hmm I kind of remember that but I can't recall what I did to fix it. are you using virtualenv? Commented Sep 12, 2016 at 21:50
  • 1
    This question looks like a special case of: stackoverflow.com/questions/57894698/… Commented Sep 23, 2021 at 10:25
  • 1
    Also it's ind of a special case of this one: stackoverflow.com/questions/45044358/… Commented Sep 23, 2021 at 10:33

2 Answers 2

11

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
Sign up to request clarification or add additional context in comments.

3 Comments

This is brilliant! As a footnote: I could not locate libssl.so.1.0.0 in miniconda3/envs/xxx/lib/. But i found it in /home/ubuntu/miniconda3/lib/
Your answer has been used (anonymised) to demo a new feature on meta (see point 3 of original post) ;-)
1

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

enter image description here

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.