我试图通过一个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函数,这是我第一次遇到这个问题
根据描述和错误消息,您的命名约定似乎是正确的
错误消息表明您缺少正则表达式模块。然而,从您的描述来看,您似乎已经正确地打包了依赖项
通常情况下,会出现运行时未匹配的情况。然而,当运行时不匹配时,我与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中函数的名称与函数无关希望有帮助
相关问题 更多 >
编程相关推荐