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.
Python-Laufzeit für verwaltete Lambda-Instanzen
Die Lambda-Laufzeit verwendet mehrere Python-Prozesse, um gleichzeitige Anfragen zu verarbeiten. Jede gleichzeitige Anforderung wird in einem separaten Prozess mit eigenem Speicherplatz und eigener Initialisierung ausgeführt. Jeder Prozess verarbeitet synchron jeweils eine Anfrage. Prozesse teilen sich den Speicher nicht direkt, sodass globale Variablen, Caches auf Modulebene und Singleton-Objekte zwischen gleichzeitigen Anfragen isoliert werden.
Konfiguration der Parallelität
Die maximale Anzahl gleichzeitiger Anfragen, die Lambda an jede Ausführungsumgebung sendet, wird durch die PerExecutionEnvironmentMaxConcurrency Einstellung in der Funktionskonfiguration gesteuert. Dies ist eine optionale Einstellung, und der Standardwert variiert je nach Laufzeit. Für Python-Laufzeiten ist die Standardeinstellung 16 gleichzeitige Anfragen pro vCPU, oder Sie können Ihren eigenen Wert konfigurieren. Dieser Wert bestimmt auch die Anzahl der Prozesse, die von der Python-Laufzeit verwendet werden. Lambda passt die Anzahl der gleichzeitigen Anfragen automatisch bis zum konfigurierten Maximum an, basierend auf der Kapazität jeder Ausführungsumgebung, um diese Anfragen aufzunehmen.
Wichtig
Die Verwendung prozessbasierter Parallelität bedeutet, dass jeder Runtime-Worker-Prozess seine eigene Initialisierung durchführt. Die gesamte Speicherbelegung entspricht dem Arbeitsspeicher pro Prozess multipliziert mit der Anzahl gleichzeitiger Prozesse. Wenn Sie große Bibliotheken oder Datensätze laden und über eine hohe Parallelität verfügen, haben Sie einen großen Speicherbedarf. Je nach Arbeitslast müssen Sie möglicherweise Ihr CPU-to-memory Verhältnis anpassen oder eine niedrigere Parallelitätseinstellung verwenden, um eine Überschreitung des verfügbaren Speichers zu vermeiden. Sie können die MemoryUtilization Metrik verwenden CloudWatch , um den Speicherverbrauch zu verfolgen.
Erstellung von Funktionen für mehrere Parallelitäten
Aufgrund des prozessbasierten Multi-Concurrency-Modells greifen Lambda Managed Instances-Funktionen, die Python-Laufzeiten verwenden, bei mehreren Aufrufen nicht gleichzeitig auf speicherinterne Ressourcen zu. Sie müssen keine Codierungspraktiken anwenden, um die Sicherheit der Parallelität im Speicher zu gewährleisten.
Gemeinsames /tmp-Verzeichnis
Das /tmp Verzeichnis wird von allen gleichzeitigen Anfragen in der Ausführungsumgebung gemeinsam genutzt. Gleichzeitige Schreibvorgänge in dieselbe Datei können zu Datenbeschädigungen führen, z. B. wenn ein anderer Prozess die Datei überschreibt. Um dieses Problem zu lösen, implementieren Sie entweder Dateisperren für gemeinsam genutzte Dateien oder verwenden Sie eindeutige Dateinamen pro Prozess oder pro Anfrage, um Konflikte zu vermeiden. Denken Sie daran, nicht benötigte Dateien zu bereinigen, um zu vermeiden, dass der verfügbare Speicherplatz aufgebraucht wird.
Protokollierung
Das Verschachteln von Protokollen (Protokolleinträge verschiedener Anfragen, die in Protokollen verschachtelt werden) ist bei Systemen mit mehreren gleichzeitigen Vorgängen normal.
Funktionen, die Lambda Managed Instances verwenden, verwenden immer das strukturierte JSON-Protokollformat, das mit erweiterten Protokollierungssteuerungen eingeführt wurde. Dieses Format beinhaltet dierequestId, sodass Protokolleinträge mit einer einzigen Anfrage korreliert werden können. Wenn Sie das logging Modul aus der Python-Standardbibliothek in Lambda verwenden, requestId ist das automatisch in jedem Protokolleintrag enthalten. Weitere Informationen finden Sie unter Erweiterte Lambda-Protokollierungssteuerelemente mit Python verwenden.
Kontext anfordern
Wird verwendetcontext.aws_request_id, um auf die Anforderungs-ID für die aktuelle Anfrage zuzugreifen.
Bei Python-Laufzeiten können Sie die _X_AMZN_TRACE_ID Umgebungsvariable verwenden, um mit Lambda Managed Instances auf die X-Ray-Trace-ID zuzugreifen. Die X-Ray-Trace-ID wird bei Verwendung des AWS SDK automatisch weitergegeben.
Initialisierung und Herunterfahren
Die Initialisierung der Funktion erfolgt einmal pro Prozess. Möglicherweise werden Protokolleinträge wiederholt, wenn Ihre Funktion während der Initialisierung Protokolle ausgibt.
Bei Lambda-Funktionen mit Erweiterungen gibt die Ausführungsumgebung beim Herunterfahren ein SIGTERM-Signal aus. Dieses Signal wird von Erweiterungen verwendet, um Bereinigungsaufgaben wie das Leeren von Puffern auszulösen. Sie können SIGTERM-Ereignisse abonnieren, um Aufgaben zur Funktionsbereinigung auszulösen, z. B. das Schließen von Datenbankverbindungen. Weitere Informationen zum Lebenszyklus der Ausführungsumgebung finden Sie unter Grundlegendes zum Lebenszyklus der Lambda-Ausführungsumgebung.
Versionen von Abhängigkeiten
Für Lambda Managed Instances sind die folgenden Mindestpaketversionen erforderlich:
-
Powertools für AWS Lambda (Python): Version 3.23.0 oder höher
Powertools für AWS Lambda (Python)
Powertools for AWS Lambda (Python) ist mit Lambda Managed Instances kompatibel und bietet Dienstprogramme für Logging, Tracing, Metriken und mehr. Weitere Informationen finden Sie unter Powertools for AWS Lambda (Python)
Nächste Schritte
-
Überprüfen Sie die Java-Laufzeit für Lambda Managed Instances
-
Überprüfen Sie die Laufzeit von Node.js für Lambda Managed Instances
-
.NET-Laufzeit für Lambda Managed Instances überprüfen
-
Erfahren Sie mehr über die Skalierung von Lambda Managed Instances