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.
Verbesserung der Startleistung mit Lambda SnapStart
Lambda SnapStart kann eine Startleistung von nur unter einer Sekunde bieten, normalerweise ohne Änderungen an Ihrem Funktionscode. SnapStart macht es einfacher, reaktionsschnelle und skalierbare Anwendungen zu erstellen, ohne Ressourcen bereitzustellen oder komplexe Leistungsoptimierungen zu implementieren.
Der größte Beitrag zur Startup-Latenz (oft als Kaltstartzeit bezeichnet) ist die Zeit, die Lambda für die Initialisierung der Funktion aufwendet. Dazu gehören das Laden des Funktionscodes, der Start der Laufzeit und die Initialisierung des Funktionscodes. Mit initialisiert Lambda Ihre Funktion SnapStart, wenn Sie eine Funktionsversion veröffentlichen. Lambda erstellt einen Firecracker-microVM
Um die Stabilität zu gewährleisten, verwaltet Lambda mehrere Kopien jedes Snapshots. Lambda patcht Snapshots und ihre Kopien automatisch mit den neuesten Laufzeit- und Sicherheitsupdates. Wenn Sie die Funktionsversion zum ersten Mal aufrufen und wenn die Aufrufe hochskalieren, nimmt Lambda neue Ausführungsumgebungen aus dem im Cache gespeicherten Snapshot wieder auf, anstatt sie von Grund auf neu zu initialisieren, wodurch die Startup-Latenz verbessert wird.
Wichtig
Wenn Ihre Anwendungen von der Eindeutigkeit des Zustands abhängen, müssen Sie Ihren Funktionscode auswerten und sicherstellen, dass er gegenüber Snapshot-Vorgängen widerstandsfähig ist. Weitere Informationen finden Sie unter Handhabung der Eindeutigkeit mit Lambda SnapStart.
Themen
- Wann sollte es verwendet werden SnapStart
- Unterstützte Funktionen und Einschränkungen
- Unterstützte Regionen
- Erwägungen zur Kompatibilität
- SnapStart Preisgestaltung
- Lambda aktivieren und verwalten SnapStart
- Handhabung der Eindeutigkeit mit Lambda SnapStart
- Implementieren Sie Code vor oder nach Lambda-Funktions-Snapshots
- Überwachung für Lambda SnapStart
- Sicherheitsmodell für Lambda SnapStart
- Maximieren Sie die Leistung von Lambda SnapStart
- Fehlerbehebung bei SnapStart-Fehlern für Lambda-Funktionen
Wann sollte es verwendet werden SnapStart
Lambda SnapStart wurde entwickelt, um die Latenzvariabilität zu beheben, die durch einmaligen Initialisierungscode verursacht wird, z. B. beim Laden von Modulabhängigkeiten oder Frameworks. Beim ersten Aufruf kann es manchmal mehrere Sekunden dauern, bis diese Vorgänge abgeschlossen sind. Wird verwendet SnapStart , um diese Latenz in optimalen Szenarien von mehreren Sekunden auf weniger als eine Sekunde zu reduzieren. SnapStart funktioniert am besten, wenn es mit Funktionsaufrufen in großem Maßstab verwendet wird. Funktionen, die selten aufgerufen werden, weisen möglicherweise nicht dieselben Leistungsverbesserungen auf.
SnapStart ist besonders vorteilhaft für zwei Haupttypen von Anwendungen:
-
Latenzabhängige Abläufe APIs und Benutzerabläufe: Funktionen, die Teil kritischer API Endgeräte oder Benutzerabläufe sind, können von der geringeren Latenz und den verbesserten SnapStart Reaktionszeiten profitieren.
-
Workflows zur latenzsensitiven Datenverarbeitung: Zeitgebundene Datenverarbeitungsworkflows, die Lambda-Funktionen verwenden, können einen besseren Durchsatz erzielen, indem sie die Latenz bei der Initialisierung von Ausreißerfunktionen reduzieren.
Die bereitgestellte Gleichzeitigkeit sorgt dafür, dass die Funktionen im zweistelligen Millisekundenbereich initialisiert und reaktionsbereit sind. Verwenden Sie bereitgestellte Parallelität, wenn Ihre Anwendung strenge Kaltstart-Latenzanforderungen hat, die nicht angemessen erfüllt werden können. SnapStart
Unterstützte Funktionen und Einschränkungen
SnapStart ist für die folgenden von Lambda verwalteten Laufzeiten verfügbar:
-
Java 11 und höher
-
Python 3.12 oder höher
-
. NET8 und später. Wenn Sie das Lambda Annotations Framework für verwenden. NET, führen Sie ein Upgrade auf Amazon.Lambda.Annotations
Version 1.6.0 oder höher durch, um die Kompatibilität mit sicherzustellen. SnapStart
Andere verwaltete Laufzeiten (wie nodejs22.x
und ruby3.3
), Reine OS-Laufzeiten und Container-Images werden nicht unterstützt.
SnapStart unterstützt keine bereitgestellte Parallelität, Amazon Elastic File System (AmazonEFS) oder kurzlebigen Speicher mit mehr als 512 MB.
Anmerkung
Sie können es SnapStart nur für veröffentlichte Funktionsversionen und Aliase verwenden, die auf Versionen verweisen. Sie können es nicht für SnapStart die unveröffentlichte Version einer Funktion ($LATEST) verwenden.
Unterstützte Regionen
Für Java-Laufzeiten SnapStart ist Lambda in allen kommerziellen Regionen außer Asien-Pazifik (Malaysia) verfügbar.
Für Python und. NETZu den Laufzeiten SnapStart ist Lambda in den folgenden Versionen verfügbar: AWS-Regionen
USA Ost (Nord-Virginia)
USA Ost (Ohio)
USA West (Oregon)
Asien-Pazifik (Singapur)
Asien-Pazifik (Sydney)
Asien-Pazifik (Tokio)
Europe (Frankfurt)
Europa (Irland)
Europa (Stockholm)
Erwägungen zur Kompatibilität
Mit SnapStart verwendet Lambda einen einzelnen Snapshot als Ausgangszustand für mehrere Ausführungsumgebungen. Wenn Ihre Funktion während der Initialisierungsphase eines der folgenden Elemente verwendet, müssen Sie vor der Verwendung möglicherweise einige Änderungen vornehmen: SnapStart
- Eindeutigkeit
-
Wenn Ihr Initialisierungscode eindeutigen Inhalt generiert, der im Snapshot enthalten ist, ist der Inhalt möglicherweise nicht eindeutig, wenn er in Ausführungsumgebungen wiederverwendet wird. Um die Einzigartigkeit bei der Verwendung zu wahren SnapStart, müssen Sie nach der Initialisierung eindeutige Inhalte generieren. Dazu gehören einzigartigeIDs, einzigartige Geheimnisse und Entropie, die verwendet wird, um Pseudozufälligkeit zu erzeugen. Informationen zum Wiederherstellen von Eindeutigkeit finden Sie unter Handhabung der Eindeutigkeit mit Lambda SnapStart.
- Netzwerkverbindungen
-
Der Zustand der Verbindungen, die Ihre Funktion während der Initialisierungsphase herstellt, ist nicht garantiert, wenn Lambda Ihre Funktion von einem Snapshot fortsetzt. Überprüfen Sie den Status Ihrer Netzwerkverbindungen und stellen Sie diese bei Bedarf wieder her. In den meisten Fällen werden Netzwerkverbindungen, die ein herstellt, automatisch wieder aufgenommen. AWS SDK Für andere Verbindungen lesen Sie die bewährten Methoden.
- Temporäre Daten
-
Einige Funktionen laden während der Initialisierungsphase kurzlebige Daten herunter oder initialisieren diese, wie etwa temporäre Anmeldeinformationen oder im Cache gespeicherte Zeitstempel. Aktualisieren Sie kurzlebige Daten im Funktionshandler, bevor Sie sie verwenden, auch wenn Sie sie nicht verwenden. SnapStart
SnapStart Preisgestaltung
Anmerkung
Für Java-verwaltete Laufzeiten fallen keine zusätzlichen Kosten für SnapStart an. Die Abrechnung erfolgt basierend auf der Anzahl der Anfragen für Ihre Funktionen, der Zeit, die Ihr Code zum Ausführen benötigt, und dem für Ihre Funktion konfigurierten Arbeitsspeicher.
Die Kosten für die Nutzung SnapStart beinhalten Folgendes:
-
Caching: Für jede Funktionsversion, die Sie mit SnapStart aktivierter Option veröffentlichen, zahlen Sie die Kosten für das Zwischenspeichern und Verwalten des Snapshots. Der Preis hängt von der Speichermenge ab, die Sie Ihrer Funktion zuweisen. Ihnen werden mindestens 3 Stunden in Rechnung gestellt. Es fallen weiterhin Gebühren an, solange Ihre Funktion aktiv ist. Verwenden Sie die ListVersionsByFunctionAPIAktion, um Funktionsversionen zu identifizieren, und verwenden Sie sie dann, DeleteFunctionum ungenutzte Versionen zu löschen. Informationen zum automatischen Löschen ungenutzter Funktionsversionen finden Sie im Lambda Version Cleanup
-Pattern auf Serverless Land. -
Wiederherstellung: Jedes Mal, wenn eine Funktionsinstanz aus einem Snapshot wiederhergestellt wird, zahlen Sie eine Wiederherstellungsgebühr. Der Preis hängt von der Speichermenge ab, die Sie Ihrer Funktion zuweisen.
Wie bei allen Lambda-Funktionen fallen Dauergebühren für Code an, der im Funktionshandler ausgeführt wird. Bei SnapStart Funktionen fallen Gebühren für die Dauer auch für Initialisierungscode an, der außerhalb des Handlers deklariert wurde, für die Zeit, die zum Laden der Laufzeit benötigt wird, und für jeden Code, der in einem Runtime-Hook ausgeführt wird. Die Dauer wird vom Beginn der Ausführung Ihres Codes bis zur Rückgabe oder einem anderen Ende berechnet, aufgerundet auf die nächste 1 ms. Lambda verwaltet aus Gründen der Ausfallsicherheit zwischengespeicherte Kopien Ihres Snapshots und wendet automatisch Softwareupdates wie Laufzeit-Upgrades und Sicherheitspatches auf diese an. Jedes Mal, wenn Lambda Ihren Initialisierungscode erneut ausführt, um Softwareupdates zu installieren, fallen Gebühren an.
Weitere Informationen zu den Nutzungskosten finden Sie unter SnapStart AWS Lambda Preisgestaltung