Python 3.x 未找到Python AWS Lambda模块

Python 3.x 未找到Python AWS Lambda模块,python-3.x,amazon-web-services,aws-lambda,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控制台中部署的此软件包: Lambda可通过API网关访问

我在Python 3.7中实现了一个AWS Lambda,并将其部署在一个包中,如下所示:

universe-UIFunctionCelestial-XXXX
|--universe-0-0-1-SNAPSHOT
| |--src
| | |--lambdas
| | | |--__init__.py
| | | |--celestial_persist_function.py
| | |--__init__.py
下图显示了在AWS控制台中部署的此软件包:

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

周三3月4日09:49:35 UTC 2020:转换前的端点响应正文:{“errorMessage”:“无法导入模块‘universe-0-0-1-SNAPSHOT/src/lambdas/Severtical_persist_function”:没有名为‘src’的模块,“errorType”:“Runtime.ImportModuleError”}

周三3月4日09:49:35 UTC 2020:Lambda执行失败,状态为200,原因是客户函数错误:无法导入模块“universe-0-0-1-SNAPSHOT/src/lambdas/sessional_persist_function”:没有名为“src”的模块。Lambda请求id:381990d0-f193-4e49-b0fa-2c6d736552bd

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

我的印象是Python Lambda执行将Lambda作为一个模块导入,因此我在每个级别添加了
\uuu init\uuuu.py
文件。这些可能有助于lambda导入以及lambda中的导入,如:

from src.persistence.persistence_service import PersistenceService
无论如何,我尝试了许多不同的安排和文件结构。我可能做错了什么


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

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


另外,我建议使用serverless.com框架来构建您的lambda-这对于start来说要容易得多

问题提出已经有一段时间了,但我还是会回答它-也许它会帮助其他人

我也有同样的问题-Lambda的问题是它运行在src文件夹中,它不理解您的导入。您需要的是:

    from [folder inside src] import [filename]
因此,您的导入应该如下所示:

    from persistence import persistence_service

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

正如我所提到的,我尝试了许多安排,更改名称和移动目录就是其中之一。是的,无服务器框架,我大约一年前就去过了。实际上,我使用了CloudFormation,这是AWS自己的部署方法,但是,如果部署框架的选择对内部python错误有任何影响,我会感到相当惊讶。Serverless框架(Serverless.com)和CloudFormation是相关的,但不同。我建议看看前者。使将无服务器应用程序部署到AWS变得更简单。@MichaelCoxon实际上,SF在CloudFormation之上工作。如果您仍然想自己做这件事,请在这里检查一个示例:尝试将您的函数移到/中,并将包移到/lib目录下。Python只是在lambdas目录下找不到目标名称空间,我想,听着,谢谢大家对SF的所有吹捧,但我真的很想找到这个问题的解决方案