【发布时间】:2021-10-16 03:41:48
【问题描述】:
所以我试图在 AWS Lambda 中设置一个函数来运行我从 zip 导入的一些 python 代码。
我尝试在导入 zip 文件夹时创建目录中的文件,然后将其移至主函数目录。都没有用
不太清楚这里出了什么问题, 我运行测试时返回的完整错误是:
Response
{
"errorMessage": "Unable to import module 'main': No module named 'main'",
"errorType": "Runtime.ImportModuleError",
"stackTrace": []
}
编辑:对 Lambda 来说真的很新,所以请原谅任何愚蠢的错误
【问题讨论】:
-
您的 Lambda 函数处理程序应该是
def runJobs(event, context),而不是def runJobs()。它将使用 2 个位置参数调用。这绝对是您的代码的问题,必须修复,但可能不是您的代码的初始问题,即导入失败。确保您已保存所有更改并部署了所有当前代码。 main.py 中还有哪些其他代码?您的部署 ZIP 文件中还有什么? -
runJobs.py 调用了其他函数,其他文件是一个 json 文件,其中有一个密钥供我编辑谷歌表格。我需要对函数中的事件和上下文参数进行哪些更改?
-
只需编写正确的函数声明,就像我上面指出的那样,是必要的。因此,我建议您编写一个非常基本的 main.py 版本(不包含所有其他代码),其中包括
def runJobs(event, context)并做一些琐碎的事情,例如print(42)。部署,然后测试。有用吗? -
所以我编辑了我的函数
def runJobs(event, context)并添加了一个 print("that working"),但我仍然得到相同的响应Response { "errorMessage": "Unable to import module 'main': No module named 'main'", "errorType": "Runtime.ImportModuleError", "stackTrace": [] } -
你提到了 main.py 和 runJobs.py。它们都存在吗? Lambda 显示的完整文件列表是什么?你确定你已经保存并部署了代码吗?
标签: python-3.x amazon-web-services aws-lambda