View a markdown version of this page

Arbeiten mit Snapshots - 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.

Arbeiten mit Snapshots

Wenn AWS Lambda MicroVMS ein MicroVM-Image erstellt, erfasst es einen Firecracker-Snapshot Ihrer vollständig initialisierten Anwendung. Auf dieser Seite wird beschrieben, was ein Snapshot enthält, wie mit der Einzigartigkeit von MicroVMs umgegangen wird, die denselben Snapshot verwenden, und bewährte Methoden für Snapshot-kompatible Anwendungen.

Was ein Snapshot erfasst

Ein Firecracker-Snapshot erfasst den folgenden Status von Ihrer MicroVM zum Zeitpunkt des Abschlusses der Image-Erstellung:

  • Speicherstatus der laufenden Prozesse — Alle vonENTRYPOINT/gestarteten ProzesseCMD, einschließlich Hintergrund-Daemons, Cron-Jobs und untergeordneter Prozesse.

  • Festplattenstatus — Das Root-Dateisystem einschließlich aller während der Build-Phase geschriebenen Dateien (installierte Pakete, kompilierte Binärdateien, Konfigurationsdateien).

  • Netzwerkverbindungen und Dateideskriptoren — Alle initialisierten Netzwerkverbindungen, Datei-Handles, Pipes und andere Deskriptoren.

Wenn Sie eine MicroVM ausführen, stellt Lambda sie aus diesem Snapshot wieder her. Ihre Anwendung wird genau dort fortgesetzt, wo der Build der MicroVM-Image-Version aufgehört hat.

Erwägungen zur Kompatibilität

Da alle MicroVMs, die mit derselben Image-Version gestartet wurden, den gleichen Ausgangszustand haben, sollten Sie beim Erstellen von Anwendungen mit Lambda-MicroVMs Folgendes beachten:

  • Eindeutigkeit — Wenn Ihr Code während der Erstellungsphase der Image-Version eindeutigen Inhalt generiert (eindeutige IDs, Geheimnisse oder Entropie für Pseudozufälligkeit), wird dieser Inhalt von allen MicroVMs gemeinsam genutzt, die auf derselben Image-Version ausgeführt werden. Generieren Sie eindeutigen Inhalt nach dem Start einer neuen microVM, nicht während der Image-Erstellung. Verwenden Sie den /run Lifecycle-Hook, um zuvor generierte eindeutige Inhalte zurückzusetzen.

  • Netzwerkverbindungen — Verbindungen, die während der Erstellungsphase der Image-Version hergestellt wurden, müssen möglicherweise erneut hergestellt werden, wenn eine MicroVM von der Image-Version aus ausgeführt wird. Überprüfen Sie den Verbindungsstatus und stellen Sie die Verbindungen bei Bedarf erneut her. In den meisten Fällen werden von AWS SDKs erstellte Verbindungen automatisch wiederhergestellt.

Umgang mit Eindeutigkeiten mit Schnappschüssen

Alle MicroVMs, die auf demselben Image ausgeführt werden, haben einen identischen Anfangszustand. Um die Einzigartigkeit aller MicroVMs zu wahren:

  • Generieren Sie eindeutige IDs, Geheimnisse und Zufallswerte, nachdem eine MicroVM gestartet wurde und nicht während der Erstellung der Image-Version. Verwenden Sie den /run Lifecycle-Hook, um jeden eindeutigen Status zurückzusetzen.

  • Verwenden Sie kryptografisch sichere Pseudozufallszahlengeneratoren (CSPRNGs) für Ihre Programmiersprache. Stellen Sie sicher, dass Ihre kryptografische Bibliothek dem Sprachstandard entspricht, ihre Entropie vom Gerät oder Gerät erhält. /dev/random /dev/urandom Dies ist das Standardverhalten für kryptografische Bibliotheken für gängige Programmiersprachen wie Java 11+ (SecureRandom Bibliothek), (Crypto.RandomBytes-Bibliothek), Python 3.12+ Node.js (Bibliothek) und Dotnet8+ (Bibliothek). Secrets.SystemRandom Cryptography.RandomNumberGenerator Software, die bei Verwendung mit MicroVM-Image-Snapshots Zufälligkeiten liest oder beibehält/dev/random. /dev/urandom

  • Wenn Ihr Anwendungscode OpenSSL verwendet, verwenden Sie das AWS bereitgestellte Basis-Container-Image von, um Ihr MicroVM-Image public.ecr.aws/lambda/microvms:al2023-minimal zu erstellen. Dieses Image enthält eine AWS gepatchte Version von OpenSSL, die mit Snapshotting kompatibel ist. Wenn Sie Ihr eigenes Basis-Image mit OpenSSL verwenden möchten, verwenden Sie die gepatchte Version von OpenSSL (openssl-snapsafe-libs), die in der Amazon Linux 2023-Paketliste aufgeführt ist. https://docs.aws.amazon.com/linux/al2023/release-notes/all-packages.html