Ändern der Laufzeitumgebung - 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.

Ändern der Laufzeitumgebung

Sie können interne Erweiterungen verwenden, um den Laufzeitprozess zu ändern. Interne Erweiterungen sind keine separaten Prozesse – sie werden als Teil des Laufzeitprozesses ausgeführt.

Lambda bietet sprachspezifische Umgebungsvariablen, die Sie festlegen können, um Optionen und Werkzeuge zur Laufzeit hinzuzufügen. Lambda bietet auch Wrapper-Skripts, die Lambda erlauben, den Laufzeit-Startup an Ihr Skript zu delegieren. Sie können ein Wrapper-Skript erstellen, um das Laufzeit-Startup-Verhalten anzupassen.

Sprachspezifische Umgebungsvariablen

Lambda unterstützt Konfigurationsmöglichkeiten, mit denen Code während der Funktionsinitialisierung über die folgenden sprachspezifischen Umgebungsvariablen vorgeladen werden kann:

  • JAVA_TOOL_OPTIONS – Unter Java unterstützt Lambda diese Umgebungsvariable, um zusätzliche Befehlszeilenvariablen in Lambda zu setzen. Mit dieser Umgebungsvariablen können Sie die Initialisierung von Werkzeugen angeben, insbesondere das Starten von nativen oder Java-Agenten mit den Optionen agentlib oder javaagent. Weitere Informationen finden Sie unter JAVA_TOOL_OPTIONS-Umgebungsvariablen.

  • NODE_OPTIONS – Verfügbar in Node.js-Laufzeiten.

  • DOTNET_STARTUP_HOOKS – Auf .NET Core 3.1 und höher gibt diese Umgebungsvariable einen Pfad zu einer Assembly (DLL) an, die Lambda verwenden kann.

Die Verwendung sprachspezifischer Umgebungsvariablen ist die bevorzugte Methode zum Festlegen von Startup-Eigenschaften.

Wrapper-Skripte

Sie können ein Wrapper-Skript erstellen, um das Laufzeit-Startup-Verhalten Ihrer Lambda-Funktion anzupassen. Mit einem Wrapper-Skript können Sie Konfigurationsparameter festlegen, die nicht über sprachspezifische Umgebungsvariablen festgelegt werden können.

Anmerkung

Aufrufe können fehlschlagen, wenn das Wrapper-Skript den Laufzeitprozess nicht erfolgreich startet.

Wrapper-Skripts werden auf allen nativen Lambda-Laufzeiten unterstützt. Wrapper-Skripts werden auf Reine OS-Laufzeiten (der provided-Laufzeitfamilie) nicht unterstützt.

Wenn Sie ein Wrapper-Skript für Ihre Funktion verwenden, startet Lambda die Laufzeit mit Ihrem Skript. Lambda sendet den Pfad an Ihr Skript zum Interpreter und alle ursprünglichen Argumente für den Startup der Standardlaufzeit. Ihr Skript kann das Startup-Verhalten des Programms erweitern oder transformieren. Beispielsweise kann das Skript Argumente injizieren und ändern, Umgebungsvariablen festlegen oder Metriken, Fehler und andere Diagnoseinformationen erfassen.

Sie geben das Skript an, indem Sie den Wert der AWS_LAMBDA_EXEC_WRAPPER-Umgebungsvariablen als Dateisystempfad einer ausführbaren Binärdatei oder eines Skripts festlegen.

Beispiel: Erstellen und Verwenden eines Wrapper-Skripts mit Python 3.8

Im folgenden Beispiel erstellen Sie ein Wrapper-Skript, um den Python-Interpreter mit der -X importtime-Option zu starten. Wenn Sie die Funktion ausführen, generiert Lambda einen Protokolleintrag, der die Dauer der Importzeit für jeden Import anzeigt.

So erstellen und verwenden Sie ein Wrapper-Skript mit Python 3.8:
  1. Um das Wrapper-Skript zu erstellen, fügen Sie den folgenden Code in eine Datei mit dem Namen ei importtime_wrapper:

    #!/bin/bash # the path to the interpreter and all of the originally intended arguments args=("$@") # the extra options to pass to the interpreter extra_args=("-X" "importtime") # insert the extra options args=("${args[@]:0:$#-1}" "${extra_args[@]}" "${args[@]: -1}") # start the runtime with the extra options exec "${args[@]}"
  2. Um dem Skript ausführbare Berechtigungen zu erteilen, geben Sie chmod +x importtime_wrapper in der Befehlszeile ein.

  3. Stellen Sie das Skript als Lambda-Ebene bereit.

  4. Erstellen Sie eine Funktion mit der Lambda-Konsole.

    1. Öffnen Sie die Lambda-Konsole.

    2. Wählen Sie Funktion erstellen.

    3. Geben Sie unter Basic Information (Grundlegende Informationen) für Function name (Funktionsname) wrapper-test-function ein.

    4. Wählen Sie für Runtime (Laufzeit) die Option Python 3.8 aus.

    5. Wählen Sie Funktion erstellen.

  5. Fügen Sie die Ebene zu Ihrer Funktion hinzu.

    1. Wählen Sie Ihre Funktion und dann Code aus, wenn er noch nicht ausgewählt ist.

    2. Wählen Sie Add a layer (Layer hinzufügen) aus.

    3. Wählen Sie unter Choose a layer (Ebene auswählen) Name und Version der kompatiblen Ebene, die Sie vorher erstellt haben.

    4. Wählen Sie Add aus.

  6. Fügen Sie der Funktion den Code und die Umgebungsvariable hinzu.

    1. Fügen Sie im Funktionscode-Editor den folgenden Funktionscode ein:

      import json def lambda_handler(event, context): # TODO implement return { 'statusCode': 200, 'body': json.dumps('Hello from Lambda!') }
    2. Wählen Sie Save aus.

    3. Wählen Sie unter Environment variables (Umgebungsvariablen) die Option Edit (Bearbeiten).

    4. Wählen Sie Umgebungsvariablen hinzufügen aus.

    5. Geben Sie für Key (Schlüssel) AWS_LAMBDA_EXEC_WRAPPER ein.

    6. Geben Sie für Wert /opt/importtime_wrapper ein.

    7. Wählen Sie Save aus.

  7. Um die Funktion auszuführen, wählen Sie Test.

    Da Ihr Wrapper-Skript den Python-Interpreter mit der -X importtime-Option gestartet hat, zeigen die Protokolle die für jeden Import erforderliche Zeit an. Zum Beispiel:

    ... 2020-06-30T18:48:46.780+01:00 import time: 213 | 213 | simplejson 2020-06-30T18:48:46.780+01:00 import time: 50 | 263 | simplejson.raw_json ...