Verbesserung der Startleistung mit Lambda SnapStart - AWS Lambda

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-Snapshot des Arbeitsspeichers und des Festplattenstatus der initialisierten Ausführungsumgebung, verschlüsselt den Snapshot und legt ihn in einem intelligenten Cache ab, um die Abruflatenz zu optimieren.

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.

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:

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.