Verwaltung von Lambda-Abhängigkeiten mit Ebenen - 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.

Verwaltung von Lambda-Abhängigkeiten mit Ebenen

Eine Lambda-Ebene ist ein ZIP-Dateiarchiv mit ergänzendem Code oder ergänzenden Daten. Ebenen enthalten üblicherweise Bibliotheksabhängigkeiten, eine benutzerdefinierte Laufzeit oder Konfigurationsdateien.

Die Verwendung von Ebenen ermöglicht Folgendes:

  • Verringern der Größe Ihrer Bereitstellungspakete: Platzieren Sie Ihre Funktionsabhängigkeiten in einer Ebene, anstatt sie zusammen mit Ihrem Funktionscode in Ihr Bereitstellungspaket einzuschließen. So bleiben Bereitstellungspakete klein und übersichtlich.

  • Trennen von grundlegender Funktionslogik und Abhängigkeiten: Mit Ebenen können Sie Ihre Funktionsabhängigkeiten unabhängig von Ihrem Funktionscode aktualisieren (und umgekehrt). Dies trägt zur Trennung von Belangen bei und hilft Ihnen dabei, sich auf Ihre Funktionslogik zu konzentrieren.

  • Verwenden von Abhängigkeiten für mehrere Funktionen: Erstellte Ebenen können auf eine beliebige Anzahl von Funktionen in Ihrem Konto angewendet werden. Ohne Ebenen müssen die gleichen Abhängigkeiten in jedes einzelne Bereitstellungspaket eingefügt werden.

  • Verwenden des Code-Editors der Lambda-Konsole: Der Code-Editor ist ein praktisches Tool zum schnellen Testen kleinerer Funktionscode-Aktualisierungen. Sie können den Editor jedoch nicht verwenden, wenn Ihr Bereitstellungspaket zu groß ist. Die Verwendung von Ebenen verringert die Paketgröße und kann die Nutzung des Code-Editors ermöglichen.

Wenn Sie mit Lambda-Funktionen in Go oder Rust arbeiten, empfehlen wir, keine Ebenen zu verwenden. Für Go- und Rust-Funktionen stellen Sie Ihren Funktionscode als ausführbare Datei bereit, die Ihren kompilierten Funktionscode zusammen mit all seinen Abhängigkeiten enthält. Wenn Sie Ihre Abhängigkeiten in einer Ebene platzieren, muss Ihre Funktion während der Initialisierungsphase zusätzliche Assemblys manuell laden, was die Kaltstartzeiten verlängern kann. Für eine optimale Leistung der Go- und Rust-Funktionen sollten Sie Ihre Abhängigkeiten zusammen mit Ihrem Bereitstellungspaket angeben.

Das folgende Diagramm veranschaulicht die allgemeinen architektonischen Unterschiede zwischen zwei Funktionen mit gemeinsamen Abhängigkeiten. Bei einer Variante werden Lambda-Ebenen verwendet, bei der anderen nicht.

Vergleich zweier Funktionen, die keine Ebenen verwenden, und zweier Funktionen, die sich eine Ebene teilen.

Wenn Sie einer Funktion eine Ebene hinzufügen, extrahiert Lambda die Inhalte der Ebene in das Verzeichnis /opt in der Ausführungsumgebung Ihrer Funktion. Alle nativ unterstützten Lambda-Laufzeiten enthalten Pfade zu spezifischen Verzeichnissen innerhalb des Verzeichnisses /opt. Dadurch erhält die Funktion Zugriff auf Ihre Ebeneninhalte. Weitere Informationen zu diesen spezifischen Pfaden und zum richtigen Verpacken Ihrer Ebenen finden Sie unter Verpacken Ihres Ebeneninhalts.

Sie können pro Funktion bis zu fünf Ebenen einschließen. Ebenen können zudem nur mit Lambda-Funktionen verwendet werden, die als ZIP-Dateiarchiv bereitgestellt werden. Bei als Container-Image definierten Funktionen werden Ihre bevorzugte Laufzeit und alle Codeabhängigkeiten beim Erstellen des Container-Images verpackt. Weitere Informationen finden Sie im AWS Compute-Blog unter Arbeiten mit Lambda-Layern und Erweiterungen in Container-Images.

Verwenden von Ebenen

Zum Erstellen einer Ebene müssen Sie Ihre Abhängigkeiten in einer ZIP-Datei verpacken – ähnlich wie beim Erstellen eines normalen Bereitstellungspakets. Genauer gesagt umfasst der allgemeine Prozess der Erstellung und Verwendung von Ebenen die drei folgenden Schritte:

Ebenen und Ebenenversionen

Eine Ebenenversion ist eine unveränderliche Momentaufnahme einer spezifischen Version einer Ebene. Wenn Sie eine neue Ebene erstellen, erstellt Lambda eine neue Ebenenversion mit der Versionsnummer 1. Bei jeder Veröffentlichung einer Aktualisierung für die Ebene erhöht Lambda die Versionsnummer und erstellt eine neue Ebenenversion.

Jede Layer-Version wird durch einen eindeutigen Amazon-Ressourcennamen (ARN) identifiziert. Beim Hinzufügen einer Ebene zur Funktion muss die exakte Ebenenversion angegeben werden, die Sie verwenden möchten.