AWS Lambda Python包 - 没有名为redis的模块

时间:2016-08-06 14:47:58

标签: python amazon-web-services aws-lambda

我有一个python个包,我想将其上传到AWS Lambda。 该软件包可以在两台不同的机器上运行,完全没有依赖性问题。

但是,将同一文件夹上传到AWS Lambda时,我收到以下错误:

  

无法导入模块' tweet_analyzer_python / lambda_handler':没有名为redis的模块

以下是包中文件的列表:

.
|-- event.json
|-- lambda_handler.py
|-- redis
|   |-- client.py
|   |-- client.pyc
|   |-- _compat.py
|   |-- _compat.pyc
|   |-- connection.py
|   |-- connection.pyc
|   |-- exceptions.py
|   |-- exceptions.pyc
|   |-- __init__.py
|   |-- __init__.pyc
|   |-- lock.py
|   |-- lock.pyc
|   |-- sentinel.py
|   |-- utils.py
|   `-- utils.pyc
|-- redis-2.10.5-py2.7.egg-info
|   |-- dependency_links.txt
|   |-- installed-files.txt
|   |-- PKG-INFO
|   |-- SOURCES.txt
|   `-- top_level.txt
|-- retrying-1.3.3-py2.7.egg-info
|   |-- dependency_links.txt
|   |-- installed-files.txt
|   |-- PKG-INFO
|   |-- requires.txt
|   |-- SOURCES.txt
|   `-- top_level.txt
|-- retrying.py
|-- retrying.pyc
|-- six-1.10.0-py2.7.egg-info
|   |-- dependency_links.txt
|   |-- installed-files.txt
|   |-- PKG-INFO
|   |-- SOURCES.txt
|   `-- top_level.txt
|-- six.py
`-- six.pyc

对于仔细检查,我已经下载了上传到zip的相同AWS Lambda文件并将其放在干净的linux机器上。 运行时:

  

python tweet_analyzer_python / lambda_handler

我完全没有问题。

有人可以解释一下我做错了什么吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

当你在本地运行'lambda_handler.py'时,你正在python文件中运行一个main方法。然而,lambda函数直接在lambda_handler.py中调用lambda_handler方法。

您的lambda处理程序未配置为运行'lambda_handler.lambda_handler'并且在'tweet_analyzer_python / lambda_handler'上失败

要么:

  • 1)将lambda_handler.py重命名为tweet_analyzer_python或
  • 2)将lambda处理程序更改为“lambda_handler.lambda_handler”

改变你的处理程序;在AWS中运行lambda,选择配置,然后更新处理程序并保存函数。

还要确保您的redis dep打包在拉链lambda函数中。