找不到Python AWS Lambda模块

时间:2020-03-04 10:23:56

标签: python-3.x amazon-web-services aws-lambda

我有一个用Python 3.7实现的AWS Lambda,并部署在如下所示的程序包中:

universe-UIFunctionCelestial-XXXX
|--universe-0-0-1-SNAPSHOT
| |--src
| | |--lambdas
| | | |--__init__.py
| | | |--celestial_persist_function.py
| | |--__init__.py

下图显示了此软件包在AWS控制台中的部署: code portion of Lambda console

可以通过API网关访问Lambda。其GET方法成功调用了Lambda,但是Lambda返回以下错误:

Mar Mar 04 09:49:35 UTC 2020:转换之前的端点响应主体:{“ errorMessage”:“无法导入模块'universe-0-0-1-SNAPSHOT / src / lambdas / celestial_persist_function':无模块名为“ src””,“ errorType”:“ Runtime.ImportModuleError”}

3月04日星期三09:49:35 UTC 2020:由于客户功能错误,Lambda执行失败,状态为200:无法导入模块'universe-0-0-1-SNAPSHOT / src / lambdas / celestial_persist_function':无模块名为“ src”。 Lambda请求ID:381990d0-f193-4e49-b0fa-2c6d736552bd

2020年3月4日星期三09:49:35:方法已完成,状态为:502

我的印象是Python Lambda执行将lambda作为模块导入,因此我在每个级别添加了__init__.py文件。这些可能会帮助lambda导入以及lambda内的导入,例如:

from src.persistence.persistence_service import PersistenceService

无论如何,我已经尝试了许多不同的安排和文件结构。我可能做错了什么?

顺便说一句,所有代码都在本地执行,没有任何问题。

2 个答案:

答案 0 :(得分:0)

我对Python没有经验,但是看起来您应该将代码上传到另一个根文件夹。请尝试将.... / src /移至/

P.S。而且我建议使用serverless.com框架来构建您的lambda-开始更容易

答案 1 :(得分:0)

这个问题已经有一段时间了,但我还是会回答 - 也许它会帮助别人。

我遇到了同样的问题 - Lambda 的问题是它在 src 文件夹内运行,并且无法理解您的导入。你需要的是:

    from [folder inside src] import [filename]

因此您的导入应如下所示:

    from persistence import persistence_service

在此之后,您将能够调用PersistenceService