Python AWS Lambda + Pusher ImportError

时间:2016-03-31 16:26:26

标签: python amazon-web-services lambda

我在使用psp包Pusher的AWS Lambda制作和使用python部署包时遇到了麻烦。这是我得到的错误。

No module named ndg.httpsclient.ssl_peer_verification: ImportError
Traceback (most recent call last):
  File "/var/task/Lambda.py", line 3, in pusherTest
    pusher = Pusher(app_id=u'154504', key=u'121300e92c61a1fe43bc', secret=u'bfff467a2b6551f19226')
  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

以下是为想要尝试的人重新创建问题的步骤。我甚至在免费沙盒中加入了一个虚拟Pusher应用程序,以防您从未使用它。

  1. 使用virtualenv

    创建新的虚拟环境

    vagrant @ homestead:〜/ Code / Lamdba $ virtualenv env / home / vagrant / Code / Lamdba / env / bin / python中的新python可执行文件 安装setuptools,pip,wheel ......完成。

  2. 激活虚拟环境以安装软件包。

    vagrant @ homestead:〜/ Code / Lamdba $ source env / bin / activate (env)vagrant @ homestead:〜/ Code / Lamdba $

  3. 安装推送包

  4. pip install pusher

    1. env/lib/python2.7/site-packages压缩到一个带有py脚本的zip文件中,其中的代码如下所示

      from pusher import Pusher def pusherTest(context, event): pusher = Pusher(app_id=u'154504', key=u'121300e92c61a1fe43bc', secret=u'bfff467a2b6551f19226') pusher.trigger('testchannel', 'testevent', {u'some': u'data'})

    2. 上传到Lambda并测试功能。

    3. 请有人帮忙。

1 个答案:

答案 0 :(得分:1)

您的应用程序无法导入ndg.httpsclient.ssl_peer_verification模块,因此您必须确保:

  1. ndg-httpsclient软件包已安装在虚拟环境中。这是推送包的依赖,所以我猜它确实安装了,但用pip freeze确认。
  2. 您压缩env/lib/python2.7/site-packages/的内容,而不是目录。 AWS期望ndg包位于Lambda应用程序的根目录中。