Comment puis-je créer un package de déploiement AWS Lambda pour Python ?

Vous devrez peut-être créer un package de déploiement qui inclut les modules de fonction situés à la racine du fichier .zip avec des autorisations de lecture et d'exécution pour tous les fichiers.

« ModuleNotFoundError » et « Module cannot be loaded » sont des erreurs courantes pour les fonctions Lambda dans Python. Ces erreurs sont généralement dues à une structure de dossier ou à des autorisations sur les fichiers incorrectes avec le fichier .zip du package de déploiement.

Installer tous les modules de dépendance en local dans le projet de fonction

Remarque : La plupart des modules Python sont indépendants de la plate-forme, mais certains modules sont compilés en fonction d'environnements de système d'exploitation spécifiques. AWS Lambda fonctionne dans un environnement Linux. Si vous installez des modules avec pip pour le déploiement, une bonne pratique consiste à construire le fichier .zip dans un environnement Linux pour être sûr que les dépendances sont incluses pour la bonne plate-forme.

Si vous utilisez pip install pour installer vos modules, ces derniers se trouveront dans votre dossier utilisateur ou dans les dossiers système. Lorsque vous créez un package de déploiement pour Lambda, celui-ci n'inclut pas ces dépendances installées par le système. Installez vos dépendances localement dans votre dossier de projet de fonction en exécutant la commande suivante :

pip install boto3 -t ./

Cela installe les modules Python boto3 à la racine de votre dossier de projet. Répétez l’opération pour tous les modules requis pour la fonction Lambda.

Ajout d'autorisations (Linux et macOS uniquement)

Une fois que tous les modules dépendants ont été téléchargés dans le dossier de projet, exécutez la commande suivante pour vous assurer que les fichiers ont les autorisations requises :

chmod -R 755 .

Créer manuellement un package de déploiement

Exécutez cette commande pour zipper le dossier de projet en vue de son déploiement sur Lambda :

zip -r ../myDeploymentPackage.zip .

Cela zippe tous les fichiers du dossier de publication dans un fichier .zip situé dans le dossier parent.

Vérification du package de déploiement

Linux et macOS :

unzip -l myDeploymentPackage.zip

Cette commande affiche la structure du dossier. Les principaux fichiers de fonction Python pour votre application doivent se trouver à la racine de votre dossier projet. D'autres fichiers de dépendance, tels que des modules Python supplémentaires, peuvent se trouver dans d'autres dossiers.

Windows :

Utilisez un outil zip pour dézipper vos fichiers. Les principaux fichiers de fonction Python doivent se trouver à la racine du fichier .zip. Si le fichier .zip contient un autre dossier de base dans lequel se trouvent vos fichiers de fonction Python, recréez le fichier .zip avec tous les fichiers de fonction dans le dossier racine.

Chargement du package de déploiement sur votre fonction Lambda

  1. Ouvrez la console AWS Lambda.
  2. Choisissez Fonctions dans le volet de navigation, puis ouvrez votre fonction.
  3. Dans la section Function code (Code de fonction), pour Code entry type (Type d'entrée de code), choisissez Upload a .ZIP file (Charger un fichier .zip).
  4. Choisissez Upload (Charger), puis sélectionnez votre fichier .zip.
  5. Sélectionnez Sauvegardez.
  6. Sélectionnez Test.

Vous pouvez aussi charger votre fichier .zip à partir de l'interface de ligne de commande AWS (AWS CLI) à l'aide de la commande update-function-code.


Cette page vous a-t-elle été utile ? Oui | Non

Retour au Centre de connaissances AWS Support

Vous avez besoin d'aide ? Consultez le site du Centre AWS Support

Date de publication : 30/07/2018