Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Arbeiten mit Ebenen für Python Lambda-Funktionen
Verwenden Sie Lambda-Ebenen, um Code und Abhängigkeiten zu bündeln, die Sie für mehrere Funktionen wiederverwenden möchten. Ebenen enthalten üblicherweise Bibliotheksabhängigkeiten, eine benutzerdefinierte Laufzeit oder Konfigurationsdateien. Das Erstellen einer Ebene umfasst drei allgemeine Schritte:
-
Verpacken Ihres Ebeneninhalts. Dies bedeutet, dass Sie ein .zip-Dateiarchiv erstellen, das die Abhängigkeiten enthält, die Sie in Ihren Funktionen verwenden möchten.
-
Erstellen Sie die Ebene in Lambda.
-
Fügen Sie die Ebene zu Ihren Funktionen hinzu.
Themen
Verpacken Ihres Ebeneninhalts
Um eine Ebene zu erstellen, bündeln Sie Ihre Pakete in einem ZIP-Dateiarchiv, das die folgenden Anforderungen erfüllt:
-
Erstellen Sie die Ebene mithilfe derselben Version von Python, die Sie für die Lambda-Funktion verwenden möchten. Wenn Sie Ihren Layer beispielsweise mit Python 3.14 erstellen, verwenden Sie die Python 3.14-Laufzeit für Ihre Funktion.
-
Ihre ZIP-Datei muss ein
python-Verzeichnis auf der Stammebene enthalten. -
Die Pakete in Ihrer Ebene müssen mit Linux kompatibel sein. Lambda-Funktionen werden auf Amazon Linux ausgeführt.
Sie können Ebenen erstellen, die entweder mit pip installierte Python-Bibliotheken von Drittanbietern (wie requests oder pandas) oder Ihre eigenen Python-Module und -Pakete enthalten.
So erstellen Sie eine Ebene mit pip-Paketen
-
Wählen Sie eine der folgenden Methoden, um
pip-Pakete in das erforderliche Verzeichnis der obersten Ebene (python/) zu installieren: -
Zippen Sie den Inhalt des
python-Verzeichnisses.Die Verzeichnisstruktur Ihrer ZIP-Datei sollte wie folgt aussehen:
python/# Required top-level directory └── requests/ └── boto3/ └── numpy/ └── (dependencies of the other packages)Anmerkung
Wenn Sie eine virtuelle Python-Umgebung (venv) zur Installation von Paketen verwenden, sieht Ihre Verzeichnisstruktur anders aus (zum Beispiel
python/lib/python3.). Solange Ihre ZIP-Datei dasx/site-packagespython-Verzeichnis auf der Stammebene enthält, kann Lambda Ihre Pakete finden und importieren.
So erstellen Sie eine Ebene mithilfe Ihres eigenen Codes
-
Erstellen Sie das erforderliche Verzeichnis der obersten Ebene für Ihre Ebene:
mkdir python -
Erstellen Sie Ihre Python-Module im
python-Verzeichnis. Das folgende Beispielmodul validiert Bestellungen, indem es überprüft, ob sie die erforderlichen Informationen enthalten.Beispiel Benutzerdefiniertes Modul: 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) } -
Zippen Sie den Inhalt des
python-Verzeichnisses.Die Verzeichnisstruktur Ihrer ZIP-Datei sollte wie folgt aussehen:
python/# Required top-level directory └── validator.py -
Importieren und verwenden Sie die Module in Ihrer Funktion wie bei jedem anderen Python-Paket. Beispiel:
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' })Sie können das folgende Testereignis verwenden, um die Funktion aufzurufen:
{ "body": "{\"product_id\": \"ABC123\", \"quantity\": 2, \"priority\": \"express\"}" }Erwartete Antwort:
{ "statusCode": 200, "body": "{\"message\": \"Order validated successfully\", \"order\": {\"product_id\": \"ABC123\", \"quantity\": 2, \"shipping_priority\": \"express\"}}" }
Erstellen Sie die Ebene in Lambda
Sie können Ihren Layer entweder mit der AWS CLI oder der Lambda-Konsole veröffentlichen.
Fügen Sie die Ebene zu Ihrer Funktion hinzu
Beispiel-App
Weitere Beispiele für die Verwendung von Lambda-Layern finden Sie in der Layer-Python-Beispielanwendung