View a markdown version of this page

Erweitern Sie Lambda-Ereignisfunktionen mithilfe von Lambda-Erweiterungen - 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.

Erweitern Sie Lambda-Ereignisfunktionen mithilfe von Lambda-Erweiterungen

Sie können Lambda-Erweiterungen verwenden, um Ihre Lambda-Ereignisfunktionen zu erweitern. Verwenden Sie beispielsweise Lambda-Erweiterungen, um Event Functions in Ihre bevorzugten Tools für Überwachung, Observability, Sicherheit und Governance zu integrieren. Sie können aus einer Vielzahl von Tools wählen, die von AWS Lambda -Partnern bereitgestellt werden, oder Sie können Ihre eigenen Lambda-Erweiterungen erstellen.

Lambda unterstützt externe und interne Erweiterungen. Eine externe Erweiterung wird als unabhängiger Prozess in der Ausführungsumgebung ausgeführt und läuft weiter, nachdem der Aufruf der Event Function vollständig verarbeitet wurde. Da Erweiterungen als separate Prozesse ausgeführt werden, können Sie sie in einer anderen Sprache als die Event-Funktion schreiben. Alle Laufzeiten der Lambda-Ereignisfunktion unterstützen Erweiterungen.

Eine interne Erweiterung wird als Teil des Laufzeitprozesses ausgeführt. Ihre Event-Funktion greift mithilfe von Wrapper-Skripten oder prozessinternen Mechanismen wie auf interne Erweiterungen zu. JAVA_TOOL_OPTIONS Weitere Informationen finden Sie unter Ändern der Laufzeitumgebung.

Sie können Erweiterungen zu einer Event-Funktion hinzufügen, indem Sie die Lambda-Konsole, die Dienste AWS Command Line Interface (AWS CLI) oder Infrastructure as Code (IaC) und Tools wie CloudFormation, AWS Serverless Application Model (AWS SAM) und Terraform verwenden.

Ihnen wird die Ausführungszeit berechnet, die von der Erweiterung verbraucht wird (in Schritten von 1 ms). Es fallen keine Kosten für die Installation eigener Erweiterungen an. Weitere Informationen zur Preisgestaltung für Erweiterungen finden Sie unter AWS Lambda -Preise. Preisinformationen zu Partnererweiterungen finden Sie auf den Websites dieser Partner. Eine Liste der offiziellen Partnererweiterungen finden Sie unter AWS Lambda Partner für Erweiterungen.

Ausführungsumgebung

Lambda ruft Ihre Event Function in einer Ausführungsumgebung auf, die eine sichere und isolierte Laufzeitumgebung bietet. Die Ausführungsumgebung verwaltet die Ressourcen, die für die Ausführung Ihrer Event-Funktion erforderlich sind, und bietet Lebenszyklusunterstützung für die Laufzeit und die Erweiterungen der Event-Funktion.

Der Lebenszyklus der Ausführungsumgebung umfasst die folgenden Phasen:

  • Init: In dieser Phase erstellt oder hebt Lambda eine Ausführungsumgebung mit den konfigurierten Ressourcen auf, lädt den Code für die Funktion und alle Ebenen herunter, initialisiert alle Erweiterungen, initialisiert die Laufzeit und führt dann den Initialisierungscode der Funktion (der Code außerhalb des Haupthandlers) aus. Die Phase Init erfolgt entweder während des ersten Aufrufs oder vor Funktionsaufrufen, wenn Sie die bereitgestellte Parallelität aktiviert haben.

    Die Init-Phase ist in drei Unterphasen unterteilt: Extension init, Runtime init und Function init. Diese Unterphasen stellen sicher, dass alle Erweiterungen und die Laufzeit ihre Einrichtungs-Aufgaben abschließen, bevor der Funktionscode ausgeführt wird.

    Wenn SnapStart aktiviert ist, findet die Init-Phase statt, wenn Sie eine Funktionsversion veröffentlichen. Lambda speichert einen Snapshot des Arbeitsspeichers und des Festplattenzustands der initialisierten Ausführungsumgebung, speichert den verschlüsselten Snapshot und speichert ihn im Cache für den Zugriff mit geringer Latenz. Wenn Sie einen Laufzeit-Hook vor dem Prüfpunkt haben, wird der Code am Ende der Init-Phase ausgeführt.

  • Restore(SnapStart nur): Wenn Sie eine SnapStartFunktion zum ersten Mal aufrufen und die Funktion skaliert wird, nimmt Lambda neue Ausführungsumgebungen aus dem persistenten Snapshot wieder auf, anstatt die Funktion von Grund auf neu zu initialisieren. Wenn Sie über einen Laufzeit-Hook nach der Wiederherstellung verfügen, wird der Code am Ende der Restore-Phase ausgeführt. Die Dauer von Laufzeit-Hooks nach der Wiederherstellung wird Ihnen in Rechnung gestellt. Die Laufzeit muss geladen werden und Laufzeit-Hooks nach der Wiederherstellung müssen innerhalb des Timeout-Limits (10 Sekunden) abgeschlossen werden. Andernfalls erhalten Sie eine. SnapStartTimeoutException Wenn die Restore-Phase abgeschlossen ist, ruft Lambda den Funktionshandler (Invoke-Phase) auf.

  • Invoke: In dieser Phase ruft Lambda den Funktionshandler auf. Nachdem die Funktion vollständig ausgeführt wurde, bereitet sich Lambda auf die Verarbeitung eines weiteren Funktionsaufrufs vor.

  • Shutdown: Diese Phase wird ausgelöst, wenn die Lambda-Funktion für einen bestimmten Zeitraum keine Aufrufe empfängt. In dieser Shutdown-Phase fährt Lambda die Laufzeit herunter, warnt die Erweiterungen, damit sie sauber beendet werden können und entfernt dann die Umgebung. Lambda sendet ein Shutdown-Ereignis an jede Erweiterung, das der Erweiterung mitteilt, dass die Umgebung beendet wird.

Während der Init-Phase extrahiert Lambda Ebenen, die Erweiterungen enthalten, in das /opt-Verzeichnis in der Ausführungsumgebung. Lambda sucht im /opt/extensions/-Verzeichnis nach Erweiterungen, interpretiert jede Datei als ausführbaren Bootstrap zum Starten der Erweiterung und startet alle Erweiterungen parallel.

Auswirkungen auf Leistung und Ressourcen

Die Größe der Erweiterungen Ihrer Event-Funktion wird auf die Größenbeschränkung für das Bereitstellungspaket angerechnet. Bei einem ZIP-Dateiarchiv darf die entpackte Gesamtgröße der Event Function und aller Erweiterungen die Größenbeschränkung für das entpackte Bereitstellungspaket von 250 MB nicht überschreiten.

Erweiterungen können sich auf die Leistung Ihrer Event-Funktion auswirken, da sie Event-Funktions-Ressourcen wie CPU, Arbeitsspeicher und Speicher gemeinsam nutzen. Wenn eine Erweiterung beispielsweise rechenintensive Operationen ausführt, kann es sein, dass sich die Ausführungsdauer Ihrer Event-Funktion verlängert.

Jede Erweiterung muss ihre Initialisierung abschließen, bevor Lambda die Event-Funktion aufruft. Daher kann eine Erweiterung, die viel Initialisierungszeit in Anspruch nimmt, die Latenz des Aufrufs der Ereignisfunktion erhöhen.

Um die zusätzliche Zeit zu messen, die die Erweiterung nach der Ausführung der Ereignisfunktion benötigt, können Sie die PostRuntimeExtensionsDuration Funktionsmetrik verwenden. Um die Zunahme des verwendeten Speichers zu messen, können Sie die MaxMemoryUsed-Metrik verwenden. Um die Auswirkungen einer bestimmten Erweiterung zu verstehen, können Sie verschiedene Versionen Ihrer Event-Funktionen nebeneinander ausführen.

Anmerkung

MaxMemoryUsed ist eine der Metriken, die von Lambda Insights erfasst werden, und keine native Lambda-Metrik.

Berechtigungen

Erweiterungen haben Zugriff auf dieselben Ressourcen wie Event Functions. Da Erweiterungen in derselben Umgebung wie die Ereignisfunktion ausgeführt werden, werden die Berechtigungen zwischen der Ereignisfunktion und der Erweiterung gemeinsam genutzt.

Für ein ZIP-Dateiarchiv können Sie eine CloudFormation Vorlage erstellen, um das Anhängen derselben Erweiterungskonfiguration — einschließlich AWS Identity and Access Management (IAM) -Berechtigungen — an mehrere Ereignisfunktionen zu vereinfachen.