Serverless

API Gateway с Lambda-"Невозможно импортировать модуль 'server':Нет модуля с именем 'server'"

Hello Everyone,

Я попытался настроить serverless-api с помощью typescript в соответствии с https://github.com/fortejas/example-serverless-python-api в среде cloud9. Развертывание прошло успешно, однако, когда я получаю доступ к конечной точке REST API, я получаю следующая ошибка

curl -d POST https://8egyaaan6f.execute-api.ap-southeast-2.amazonaws.com/prod/update {"message": "Внутренняя ошибка сервера"}

[ERROR] Runtime.ImportModuleError: Unable to import module 'server': No module named 'server'
Traceback (most recent call last):

При дальнейшем расследовании ошибка, похоже, связана с 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

Hi,

Из сообщения об ошибке кажется, что функция Lambda не может найти метод Handler, который находится в файле server.py. Lambda пытается найти файл server.py, но не может его найти. Подробнее о настройке Python Lambda Handler можно прочитать здесь, в этой документации .

Пожалуйста,проверьте функцию Lambda,проверьте структуру папок и убедитесь,что настроенный обработчик имеет правильный путь.

Например,допустим,у меня есть следующая структура папок в моей лямбда-функции с именем "PythonLambda":

PythonLambda (This is the top Level folder which will have the same name as the Lambda function)
  -> lambda-api (This is a sub-folder)
      -> server.py (the server.py file is under the folder 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