API网关与Lambda - "Unable to import module 'server': No module named 'server'"

0

【以下的问题经过翻译处理】 大家好,

我尝试使用typescript在cloud9环境中设置一个serverless-api,按照https://github.com/fortejas/example-serverless-python-api的指示进行操作。部署成功,但是当我访问REST API端点时,出现了以下错误:

curl -d POST https://8egyaaan6f.execute-api.ap-southeast-2.amazonaws.com/prod/update {"message": "Internal server error"}

在进一步调查后,错误似乎与https://github.com/fortejas/example-serverless-python-api/blob/main/lambda-api/server.py有关。欢迎任何帮助。

Tue Jan 11 05:32:21 UTC 2022 : Endpoint response body before transformations: {"errorMessage": "Unable to import module 'server': No module named 'server'", "errorType": "Runtime.ImportModuleError", "requestId": "0be79d0e-e10b-4651-8838-b4e8dff65143", "stackTrace": []}
Tue Jan 11 05:32:21 UTC 2022 : Lambda execution failed with status 200 due to customer function error: Unable to import module 'server': No module named 'server'. Lambda request id: 0be79d0e-e10b-4651-8838-b4e8dff65143
Tue Jan 11 05:32:21 UTC 2022 : Method completed with status: 502

profile picture
专家
已提问 10 个月前90 查看次数
1 回答
0

【以下的回答经过翻译处理】 你好,从错误信息来看,Lambda函数无法找到server.py文件中的Handler方法。Lambda尝试查找server.py文件但未成功找到。你可以在这篇文档中了解有关设置Python Lambda Handler的更多信息(https://docs.aws.amazon.com/lambda/latest/dg/python-handler.html?icmpid=docs_lambda_help)。

请检查Lambda函数,检查文件夹结构并确认配置的Handler具有正确的路径。 例如,假设我在Lambda函数“PythonLambda”中具有以下文件夹结构:

PythonLambda(这是具有与Lambda函数相同名称的顶级文件夹)
-> lambda-api(这是一个子文件夹)
       -> server.py(server.py文件位于lambda-api文件夹下)

如果我的Lambda处理程序是“server.lambda_handler”,那么我会遇到与你的错误相同的错误,

START RequestId: 1d69b994-d660-4d64-ac74-83f6a659ae5c Version: $LATEST
[ERROR] Runtime.ImportModuleError: Unable to import module 'server': No module named 'server'
Traceback (most recent call last):END RequestId: 1d69b994-d660-4d64-ac74-83f6a659ae5c
REPORT RequestId: 1d69b994-d660-4d64-ac74-83f6a659ae5c	Duration: 1.04 ms	Billed Duration: 2 ms	Memory Size: 128 MB	Max Memory Used: 37 MB	

原因是Lambda尝试在顶级文件夹中查找server.py,但未能找到它。

为了能够成功调用此Lambda,我们必须将处理程序更改为“lambda-api.server.lambda_handler”,以便Lambda可以在文件夹中找到它。

START RequestId: 3c1b9e59-7ed0-41fe-8207-abc163067f56 Version: $LATEST
END RequestId: 3c1b9e59-7ed0-41fe-8207-abc163067f56
REPORT RequestId: 3c1b9e59-7ed0-41fe-8207-abc163067f56	Duration: 0.90 ms	Billed Duration: 1 ms	Memory Size: 128 MB	Max Memory Used: 37 MB	
profile picture
专家
已回答 10 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则