为什么AWS Lambda无法找到我的main.py?

2024-04-26 23:36:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图通过一个zip文件上传一个python lambda函数。我将所有python文件复制到一个名为“lambda”的目录中,将所有库直接安装到该目录中,执行chmod -R 755 .以确保所有这些文件都是可执行的,然后使用zip -r ../analysis.zip .压缩该目录

保存lambda函数的文件称为“main.py”,lambda函数称为“handler”,因此根据AWS lambda约定,我在AWS lambda页面中将它应该查找的文件设置为main.handler。我检查了我的cloudwatch日志中的lambda函数,仍然得到一个错误,说aws找不到主模块,也找不到一些正则表达式

这是官方的错误: [ERROR] Runtime.ImportModuleError: Unable to import module 'main': No module named 'regex._regex'

有人知道问题出在哪里吗?在使用相同的过程之前,我已经部署了aws lambda函数,这是我第一次遇到这个问题


Tags: 文件lambda函数py目录awsmain错误
2条回答

根据描述和错误消息,您的命名约定似乎是正确的

错误消息表明您缺少正则表达式模块。然而,从您的描述来看,您似乎已经正确地打包了依赖项

通常情况下,会出现运行时未匹配的情况。然而,当运行时不匹配时,我与regex和lambda有过斗争。现在默认情况下,我现在不在Python3.6之上。最近,我一直在努力解决对lambda的其他依赖,比如pickle对更高版本的依赖。而在3.6上,一切似乎都运行良好

通过从pypi下载taar.gz文件并运行setup.py,我在使用Python3.6的lambda上消除了regex错误。。。而不是安装pip3。虽然有点痛,但还是奏效了

Lambda在Python函数/方法上操作,而不是在文件上。因此,函数处理程序必须指向实际的函数/方法,而不是文件

因此,在main.py文件中,必须有一个函数,例如test_function,并且处理程序必须是main.test_function。AWS中函数的名称与函数无关

希望有帮助

相关问题 更多 >