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, die denselben Snapshot verwenden, umgegangen wird, und es werden bewährte Methoden für Snapshot-kompatible Anwendungen beschrieben.

Was ein Snapshot erfasst

Ein Firecracker-Snapshot erfasst den folgenden Status auf Ihrer MicroVM zu dem Zeitpunkt, an dem die Image-Erstellung abgeschlossen ist:

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

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

  • Netzwerkverbindungen und Dateideskriptoren — Alle initialisierten Netzwerkverbindungen, Dateihandles, 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 von derselben Image-Version aus gestartet werden, denselben Anfangsstatus haben, sollten Sie beim Erstellen von Anwendungen mit Lambda MicroVMS Folgendes berücksichtigen:

  • Einzigartigkeit — Wenn Ihr Code während der Erstellungsphase der Image-Version eindeutige Inhalte 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 nach Bedarf wieder her. In den meisten Fällen werden von AWS SDKs erstellte Verbindungen automatisch wiederhergestellt.

Umgang mit Einzigartigkeit mit Schnappschüssen

Alle MicroVMs, die auf demselben Image ausgeführt werden, haben einen identischen Ausgangsstatus. 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 nach Sprachstandard ihre Entropie von dem Gerät oder Gerät erhält. /dev/random /dev/urandom Dies ist das Standardverhalten für kryptografische Bibliotheken für beliebte Programmiersprachen wie Java 11+ (SecureRandom Bibliothek), Node.js (Crypto.RandomBytes-Bibliothek), Python 3.12+ (Bibliothek) und Dotnet8+ (Secrets.SystemRandomBibliothek). Cryptography.RandomNumberGenerator Software, die aus /dev/random MicroVM-Image-Snapshots liest oder die Zufälligkeit beibehält, wenn sie mit MicroVM-Image-Snapshots verwendet wird. /dev/urandom

  • Wenn Ihr Anwendungscode OpenSSL verwendet, verwenden Sie das von 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.