Serverless

API Gateway avec Lambda-"Impossible d'importer le module 'server':No module named 'server'"

Hello Everyone,

J'ai essayé de configurer une API sans serveur à l'aide de typescript selon https://github.com/fortejas/example-serverless-python-api sur un environnement cloud9 Le déploiement est réussi, mais lorsque j'accède au point de terminaison de l'API REST, je reçois l'erreur suivante

curl -d POST https://8egyaaan6f.execute-api.ap-southeast-2.amazonaws.com/prod/update {"message": "Erreur de serveur interne"}

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

Après une enquête plus approfondie, l'erreur semble être liée à https://github.com/fortejas/example-serverless-python-api/blob/main/lambda-api/server.py Toute aide est appréciée

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,

D'après le message d'erreur, il semble que la fonction Lambda est incapable de trouver la méthode Handler qui se trouve dans le fichier server.py. Lambda essaie de rechercher le fichier server.py mais ne le trouve pas. Vous pouvez en savoir plus sur la configuration du gestionnaire Python Lambda ici dans cette documentation

Veuillez vérifier la fonction Lambda,vérifier la structure du dossier et confirmer que le Handler qui a été configuré a le chemin correct.

Par exemple,disons que j'ai la structure de dossier suivante dans ma fonction Lambda nommée "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)

Si mon gestionnaire Lambda est server.lambda_handler , j'obtiendrai une erreur identique à votre erreur :

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	
  • C'est parce que Lambda essaie de chercher server.py dans le dossier de premier niveau mais ne le trouve pas.

Afin de pouvoir appeler ce Lambda avec succès, nous devons changer le gestionnaire en lambda-api.server.lambda_handler afin que Lambda puisse le trouver sous le dossier.

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	


Fonction cloud avec un meilleur GPU