Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
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.
Cette rubrique explique comment créer une couche Python et l'associer à une fonction Lambda.
Rubriques
Empaqueter le contenu de votre couche
Pour créer une couche, regroupez vos packages dans une archive de fichier .zip répondant aux exigences suivantes :
-
Construisez la couche en utilisant 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 le runtime Python 3.13 pour votre fonction.
-
Votre fichier .zip doit inclure un
python
répertoire au 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
(telles que requests
oupandas
) ou vos propres modules et packages Python.
Pour créer une couche à l'aide de packages pip
-
Choisissez l'une des méthodes suivantes pour installer les
pip
packages dans le répertoire de premier niveau requis (python/
) : -
Compressez le contenu du
python
répertoire.zip -r layer.zip python/
La structure de répertoire de votre fichier .zip doit ressembler à ceci :
python/
# Required top-level directory └── requests/ └── boto3/ └── numpy/ └── (dependencies of the other packages)Note
Si vous utilisez un environnement virtuel Python (venv) pour installer des packages, la structure de votre répertoire sera différente (par exemple,
python/lib/python3.
). Tant que votre fichier .zip inclut lex
/site-packagespython
répertoire au niveau racine, Lambda peut localiser et importer vos packages.
Pour créer une couche à l'aide de votre propre code
-
Créez le répertoire de premier niveau requis pour votre couche :
mkdir python
-
Créez vos modules Python dans le
python
répertoire. 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
python
répertoire.zip -r layer.zip python/
La structure de répertoire de votre fichier .zip doit ressembler à ceci :
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_response
import 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 pour appeler 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éation de la couche dans Lambda
Vous pouvez publier votre couche à l'aide de la console Lambda AWS CLI ou de la console Lambda.
Ajoutez la couche à votre fonction
Exemple d'application
Pour d'autres exemples d'utilisation des couches Lambda, consultez l'exemple d'application layer-python