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

AWS Lambda Python package - no module named redis

我有一个 python 包,我想上传到 AWS Lambda。 该软件包适用于两台不同的机器,完全没有依赖性问题。

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

Unable to import module 'tweet_analyzer_python/lambda_handler': No module named 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

为了仔细检查,我下载了上传到 AWS Lambda 的同一个 zip 文件,并将其放在干净的 linux 机器上。 当运行:

python tweet_analyzer_python/lambda_handler

我完全没有问题。

谁能解释一下我做错了什么?

谢谢!

当您在本地 运行 'lambda_handler.py' 时,您是在 python 文件中 运行 设置主要方法。然而,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,select 配置,更新处理程序并保存函数。

还要确保你的 redis dep 打包在你压缩的 lambda 函数中。