Serverless

API Gateway com Lambda-"Incapaz de importar módulo 'servidor':Nenhum módulo chamado 'servidor'".

Hello Everyone,

Tentei configurar uma serverless-api usando typescript conforme https://github.com/fortejas/example-serverless-python-api em um ambiente cloud9 A implantação é bem sucedida, porém quando acesso o endpoint da API REST, estou recebendo o seguinte erro

curl -d POST https://8egyaaan6f.execute-api.ap-southeast-2.amazonaws.com/prod/update {"message": "Erro interno do servidor"}

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

Em uma investigação mais aprofundada, o erro parece estar relacionado a https://github.com/fortejas/example-serverless-python-api/blob/main/lambda-api/server.py Qualquer ajuda é apreciada

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,

A partir da mensagem de erro, parece que a função Lambda não consegue encontrar o método Handler que está no arquivo server.py. O Lambda tenta procurar o arquivo server.py, mas não consegue encontrá-lo. Você pode ler mais sobre como configurar o Python Lambda Handler aqui nesta documentação

Verifique a função Lambda,verifique a estrutura da pasta e confirme que o Handler que foi configurado tem o caminho correcto.

Por exemplo,digamos que eu tenho a seguinte estrutura de pastas na minha função Lambda chamada "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)

Se meu manipulador do Lambda for server.lambda_handler , receberei um erro idêntico ao seu erro:

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	
  • Isto é porque a Lambda tenta procurar server.py na pasta de nível superior mas não consegue encontrá-lo.

Para poder chamar esse Lambda com sucesso, devemos alterar o manipulador para lambda-api.server.lambda_handler para que o Lambda possa encontrá-lo na pasta.

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	


Função de nuvem com melhor GPU