2016-03-22 15 views
0

Verwenden von AWS Lambda zum Senden von Push-Benachrichtigungen an die Pusher-App in Python. Wenn ich Pusher und all seine Abhängigkeiten in ein Verzeichnis installiere und bis Lambda zippe, führe ich einen einfachen Test aus und erhalte diesen Fehler.Python Pusher AWS Lambda

No module named ndg.httpsclient.ssl_peer_verification 

Hier ist der Code, den ich versuche zu laufen.

from pusher import Pusher 

pusher = Pusher(app_id=u'id', key=u'key', secret=u'secret') 
def createPitchZip(context, event): 
    pusher.trigger('testchannel', 'testevent', {u'some': u'data'}) 

Ich habe mehrere Beiträge darüber gesehen, aber die Abhängigkeiten einzeln zu installieren scheint nicht zu helfen.

Dank!

bearbeiten

Hier ist der Stack-Trace

No module named ndg.httpsclient.ssl_peer_verification: ImportError 
Traceback (most recent call last): 
    File "/var/task/lambda.py", line 5, in createPitchZip 
    pusher = Pusher(app_id='***', key='***', 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 49, in <module> 
    from ndg.httpsclient.ssl_peer_verification import SUBJ_ALT_NAME_SUPPORT 
ImportError: No module named ndg.httpsclient.ssl_peer_verification 

Antwort

0

Das Hinzufügen einer leeren Datei __init__.py zum Verzeichnis ndg behebt dieses Problem.

0

ich Sie virtualenv Spur von Abhängigkeiten zu halten verwenden würde vorschlagen.

Hier ist ein psedo Schritte, die Sie machen müssen:

1. virtualenv env 
2. env/bin/pip install <your packages> 
3. cd env/lib/python2.7/site-packages; zip -r mylambda.zip * 
4. also zip your lambda handler 

Wenn Sie alles richtig installiert ist, dann mylambda.zip Zip-Datei alles enthalten, die Sie benötigen.

+0

Yah sah ich seine als die andere Option in AWS docs vs 'Pip installieren -t Verzeichnis Pusher 'Ich werde es versuchen und zurück zu Ihnen. Danke für den Hinweis. – jamesmpw

+0

Nur ging durch Ihren Prozess, (was viel einfacher ist als pip installieren BTW) und ich bekomme immer noch den gleichen Fehler. Ich habe den Traceback hinzugefügt, gehe zu meinem ursprünglichen Post für mehr Klarheit. Mit dem Requests-Paket geht etwas vor sich. – jamesmpw

0

Das klingt vielleicht albern, aber nennen Sie nicht Ihren lokalen Variablenschieber. Das Binden von Variablen in der Lambda-Funktion geschieht spät während der Ausführung und in einem Bereich, den Sie möglicherweise nicht erwarten.

Ich schlage nicht vor, dies ist die vollständige Antwort, aber tun Sie eine import pusher und ändern Sie zu myPusher = pusher.Pusher..., um zu sehen, ob sich die Fehlermeldung ändert. Wenn nicht, liegt das Problem anderswo.

+0

Das ist ein sehr guter Kommentar. –

+0

Interessant. Laß mich einen Wirbel machen. – jamesmpw

+0

Habe es geschossen. Gleicher Importfehler. Wird es aber verlassen. Guter Punkt. – jamesmpw