web-dev-qa-db-fra.com

aws lambda Impossible d'importer le module 'lambda_function': aucun module nommé 'request'

J'ai récemment commencé à utiliser AWS Lambda pour utiliser des déclencheurs contre du code python que j'ai écrit. J'ai actuellement 2 fonctions lambda, toutes deux créées avec des fichiers Zip. La seconde que j'ai créée est censé tester les événements déclencheurs.

C'est à des fins de test, donc j'utilise le meilleur code de tous:

def lambda_handler(event, context):
    print ("Hello World")

Cependant, je récupère cette erreur:

Response:
{
  "errorMessage": "Unable to import module 'lambda_function'"
}

Request ID:
"65024f16-172c-11e8-ab26-27ff3322e597"

Function Logs:
START RequestId: 65024f16-172c-11e8-ab26-27ff3322e597 Version: $LATEST
Unable to import module 'lambda_function': No module named 'requests'

END RequestId: 65024f16-172c-11e8-ab26-27ff3322e597
REPORT RequestId: 65024f16-172c-11e8-ab26-27ff3322e597  Duration: 15.93 ms  
Billed Duration: 100 ms     Memory Size: 128 MB Max Memory Used: 22 MB  

Partout où j'ai cherché cela, la réponse a été résolue en s'assurant que les noms des fonctions étaient corrects ou en s'assurant que le fichier .Zip était lisible. J'ai satisfait à ces deux conditions (le nom du fichier est lambda_function.py et il est à la racine).

Alternativement, il semble que cela puisse être un problème avec les journaux. J'ai revérifié ma permission et j'ai la possibilité de créer des journaux avec toutes les ressources. Avez-vous d'autres idées sur le problème?

7
mifin

requests la bibliothèque ne vient pas par défaut dans lambda. Il semble que vous essayez de l'importer quelque part dans votre fonction/bibliothèque. Pour l'importer, vous avez besoin de la ligne suivante:

from botocore.vendored import requests

Alternativement, vous pouvez avoir besoin de compresser la bibliothèque requests à la racine de votre fichier Zip.

EDIT: Il peut y avoir une dépendance dans l'une de vos bibliothèques qui peut en avoir besoin. Pour surmonter cela, installez requests dans votre application Zip. Pour ce faire, exécutez la commande suivante dans le répertoire racine de votre application: pip install requests -t ./.

Une meilleure façon serait de créer un fichier appelé requirements.txt et y ajouter toutes les dépendances. Utilisez virtualenv pour installer tous les packages définis dans le fichier requirements.txt à l'aide de: pip install -r requirements.txt -t ./

23
krishna_mee2004