Utilisation de couches pour les fonctions Lambda Python
Utilisez les couches Lambda pour empaqueter le code et les dépendances que vous souhaitez réutiliser dans plusieurs fonctions. Les couches contiennent généralement des dépendances de bibliothèque, une exécution personnalisée, ou des fichiers de configuration. La création d’une couche implique trois étapes générales :
-
Empaquetez le contenu de votre couche. Cela signifie créer une archive de fichiers .zip contenant les dépendances que vous souhaitez utiliser dans vos fonctions.
-
Créez la couche dans Lambda.
-
Ajoutez la couche à vos fonctions.
Rubriques
Empaqueter le contenu de votre couche
Pour créer une couche, regroupez vos packages dans une archive (fichier .zip) répondant aux exigences suivantes :
-
Créez la couche à l’aide de la même version de Python que celle que vous prévoyez d’utiliser pour la fonction Lambda. Par exemple, si vous créez votre couche à l’aide de Python 3.13, utilisez l’environnement d’exécution Python 3.13 pour votre fonction.
-
Votre fichier .zip doit inclure un répertoire
pythonau niveau racine. -
Les packages de votre couche doivent être compatibles avec Linux. Les fonctions Lambda s’exécutent sur Amazon Linux.
Vous pouvez créer des couches contenant des bibliothèques Python tierces installées avec pip (comme requests ou pandas) ou vos propres modules et packages Python.
Créer une couche à l’aide de packages pip
-
Choisissez l’une des méthodes suivantes pour installer les packages
pipdans le répertoire de premier niveau requis (python/) : -
Compressez le contenu du répertoire
pythondans un fichier .zip.La structure de répertoire de votre fichier .zip devrait se présenter comme suit :
python/# Required top-level directory └── requests/ └── boto3/ └── numpy/ └── (dependencies of the other packages)Note
Si vous utilisez un environnement virtuel Python (venv) pour installer les packages, la structure de votre répertoire sera différente (par exemple,
python/lib/python3.). Tant que votre fichier .zip inclut le répertoirex/site-packagespythonau niveau racine, Lambda peut localiser et importer vos packages.
Créer une couche à l’aide de votre propre code
-
Créez le répertoire de niveau supérieur requis pour votre couche :
mkdir python -
Créez vos modules Python dans le répertoire
python. L’exemple de module suivant valide les commandes en confirmant qu’elles contiennent les informations requises.Exemple module personnalisé : validator.py
import json def validate_order(order_data): """Validates an order and returns formatted data.""" required_fields = ['product_id', 'quantity'] # Check required fields missing_fields = [field for field in required_fields if field not in order_data] if missing_fields: raise ValueError(f"Missing required fields: {', '.join(missing_fields)}") # Validate quantity quantity = order_data['quantity'] if not isinstance(quantity, int) or quantity < 1: raise ValueError("Quantity must be a positive integer") # Format and return the validated data return { 'product_id': str(order_data['product_id']), 'quantity': quantity, 'shipping_priority': order_data.get('priority', 'standard') } def format_response(status_code, body): """Formats the API response.""" return { 'statusCode': status_code, 'body': json.dumps(body) } -
Compressez le contenu du répertoire
pythondans un fichier .zip.La structure de répertoire de votre fichier .zip devrait se présenter comme suit :
python/# Required top-level directory └── validator.py -
Dans votre fonction, importez et utilisez les modules comme vous le feriez avec n’importe quel package Python. Exemple :
from validator import validate_order, format_responseimport json def lambda_handler(event, context): try: # Parse the order data from the event body order_data = json.loads(event.get('body', '{}')) # Validate and format the order validated_order = validate_order(order_data) return format_response(200, { 'message': 'Order validated successfully', 'order': validated_order }) except ValueError as e: return format_response(400, { 'error': str(e) }) except Exception as e: return format_response(500, { 'error': 'Internal server error' })Vous pouvez utiliser l’événement de test suivant afin d’invoquer la fonction :
{ "body": "{\"product_id\": \"ABC123\", \"quantity\": 2, \"priority\": \"express\"}" }Réponse attendue :
{ "statusCode": 200, "body": "{\"message\": \"Order validated successfully\", \"order\": {\"product_id\": \"ABC123\", \"quantity\": 2, \"shipping_priority\": \"express\"}}" }
Créer la couche dans Lambda
Vous pouvez publier votre couche en utilisant AWS CLI ou la console Lambda.
Ajouter la couche à votre fonction
Exemple d’application
Pour d’autres exemples d’utilisation des couches Lambda, consultez l’exemple d’application layer-python