2016-08-06 87 views
0

我有一個python包,我想上傳到AWS Lambda。 該軟件包可在兩臺不同的機器上運行,完全不存在依賴性問題。AWS Lambda Python包 - 無模塊名爲redis

然而,上傳同一文件夾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 

對於雙重檢查,我已下載相同的zip文件,該文件被上傳到AWS Lambda,並將其放在乾淨的Linux機器上。 運行時:

python tweet_analyzer_python/lambda_handler

我根本沒有問題。

有人能解釋我我做錯了什麼?

謝謝!

回答

1

當您在本地運行'lambda_handler.py'時,您正在運行python文件中的主要方法。然而,lambda函數直接調用lambda_handler.py中的lambda_handler方法。

你的拉姆達處理程序不被配置運行 '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函數中。

相關問題