在lambda_handler中,格式必须是lambda_filename.lambda_functionName 假设你想运行lambda_handler函数ans,如果它在lambda_fuction.py中那么你的处理程序格式就是“lambda_function.lambda_handler”。获得错误的另一个原因是模块依赖性。 你的lambda_fuction.py必须在zip的根目录下。
错误是由于lambda函数的文件名。在创建lambda函数时,它将要求Lambda函数处理程序。你必须把它命名为你的 的 Python_File_Name.Method_Name 强> 。在这种情况下,我将其命名为lambda.lambda_handler(lambda.py是文件名)。
请在下面找到快照。
我遇到了同样的问题,如果我没错的话,这是lynda.com教程的一部分练习。 我犯的错误是没有选择运行时为Python 3.6,它是lamda函数控制台中的一个选项。
此问题的另一个来源是压缩文件的权限。它 的 必须 强> 至少在世界范围内可读。 (分 chmod 444 )
chmod 444
在压缩它之前我在python文件上运行了以下内容并且它工作正常。
chmod u=rwx,go=r
在尝试了上述所有解决方案后,我发现了这种困难的方法。如果您在zip文件中使用子目录,请确保包含 __init__.py 文件在每个子目录中,并为我工作。
__init__.py
我也有错误。 原来我的zip文件包含代码父文件夹。当我 unzip 并检查zip文件, lambda_function 文件位于父文件夹下 ./lambda 。
unzip
lambda_function
./lambda
使用 zip 命令,修复错误:
zip
zip -r ../lambda.zip ./*
没必要那么乱。
使用python-lambda
https://github.com/nficano/python-lambda
用单个命令 pylambda deploy 它会自动部署你的功能
pylambda deploy
您需要压缩所有要求,使用此脚本
#!/usr/bin/env bash rm package.zip mkdir package pip install -r requirements.txt --target package cat $1 > package/lambda_function.py cd package zip -r9 "../package.zip" . cd .. rm -rf package
用于:
package.sh <python_file>
有这么多 陷阱 为AWS Lambda(Python)创建部署包时。我花了几个小时来调试会话,直到找到一个很少失败的公式。
我创建了一个脚本,可以自动完成整个过程,因此不易出错。我还编写了教程,解释了一切是如何工作的。您可能想要查看它:
无忧无虑的Python Lambda部署[教程+脚本]
我发现Nithin的回答很有帮助。这是一个具体的演练:
查找这些值:
使用这些值,您需要将处理程序(如屏幕截图所示)重命名为“cool.lambda_handler”。这是摆脱“无法导入模块'lambda_function'”errorMessage的一种方法。如果你要将python脚本中的处理程序重命名为“sup”,那么你需要将lambda仪表板中的处理程序重命名为“cool.sup”
@nithin, AWS发布 layers 里面的概念 Lambda 功能。您可以创建图层,在那里您可以上传尽可能多的库,然后您可以使用lambda函数连接图层。 更多细节: https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html
layers
Lambda