我有一个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
我完全没有问题。
有人可以解释一下我做错了什么吗?
谢谢!
答案 0 :(得分:1)
当你在本地运行'lambda_handler.py'时,你正在python文件中运行一个main方法。然而,lambda函数直接在lambda_handler.py中调用lambda_handler方法。
您的lambda处理程序未配置为运行'lambda_handler.lambda_handler'并且在'tweet_analyzer_python / lambda_handler'上失败
要么:
改变你的处理程序;在AWS中运行lambda,选择配置,然后更新处理程序并保存函数。
还要确保您的redis dep打包在拉链lambda函数中。