Verwenden Sie Lambda-Umgebungsvariablen, um Werte im Code zu konfigurieren - 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.

Verwenden Sie Lambda-Umgebungsvariablen, um Werte im Code zu konfigurieren

Sie können Umgebungsvariablen verwenden, um das Verhalten Ihrer Funktion anzupassen, ohne Code zu aktualisieren. Eine Umgebungsvariable ist ein Zeichenfolgenpaar, das in der versionsspezifischen Konfiguration einer Funktion gespeichert ist. Die Lambda-Laufzeit stellt Umgebungsvariablen für den Code zur Verfügung und legt zusätzliche Umgebungsvariablen mit Informationen über die Funktion und die Aufrufanforderung fest.

Anmerkung

Um die Sicherheit zu erhöhen, empfehlen wir, AWS Secrets Manager anstelle von Umgebungsvariablen Datenbankanmeldedaten und andere vertrauliche Informationen wie API-Schlüssel oder Autorisierungstoken zu speichern. Weitere Informationen finden Sie unter Geheimnisse erstellen und verwalten mit AWS Secrets Manager.

Umgebungsvariablen werden vor dem Funktionsaufruf nicht ausgewertet. Jeder von Ihnen definierte Wert wird als Literalzeichenfolge betrachtet und nicht erweitert. Führen Sie die Variablenauswertung in Ihrem Funktionscode durch.

Sie können Umgebungsvariablen in Lambda mithilfe der Lambda-Konsole, der AWS Command Line Interface (AWS CLI), AWS Serverless Application Model (AWS SAM) oder mithilfe eines AWS SDK konfigurieren.

Console

Sie definieren Umgebungsvariablen für die unveröffentlichte Version Ihrer Funktion. Wenn Sie eine Version veröffentlichen, werden die Umgebungsvariablen zusammen mit anderen versionsspezifischen Konfigurationseinstellungen für diese Version gesperrt.

Sie erstellen eine Umgebungsvariable für Ihre Funktion, indem Sie einen Schlüssel und einen Wert definieren. Ihre Funktion verwendet den Namen des Schlüssels, um den Wert der Umgebungsvariablen abzurufen.

So legen Sie Umgebungsvariablen in der Lambda-Konsole fest
  1. Öffnen Sie die Seite Funktionen der Lambda-Konsole.

  2. Wählen Sie eine Funktion aus.

  3. Wählen Sie Configuration (Konfiguration) und dann Environment variables (Umgebungsvariablen) aus.

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

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

  6. Geben Sie einen Schlüssel und einen Wert ein.

    Voraussetzungen
    • Schlüssel beginnen mit einem Buchstaben und bestehen aus mindestens zwei Zeichen.

    • Schlüssel enthalten nur Buchstaben, Zahlen und den Unterstrich (_).

    • Schlüssel sind nicht Lambda vorbehalten.

    • Die Gesamtgröße aller Umgebungsvariablen überschreitet nicht 4 KB.

  7. Wählen Sie Save aus.

Generieren einer Liste von Umgebungsvariablen im Konsolen-Code-Editor

Sie können im Lambda-Code-Editor eine Liste von Umgebungsvariablen generieren. So können Sie beim Programmieren schnell auf Ihre Umgebungsvariablen verweisen.

  1. Wählen Sie die Registerkarte Code.

  2. Wählen Sie die Registerkarte Umgebungsvariablen.

  3. Wählen Sie Tools, Umgebungsvariablen anzeigen.

Umgebungsvariablen bleiben verschlüsselt, wenn sie im Code-Editor der Konsole aufgeführt werden. Wenn Sie Verschlüsselungshilfen für die Verschlüsselung während der Übertragung aktiviert haben, bleiben diese Einstellungen unverändert. Weitere Informationen finden Sie unter Sicherung von Lambda-Umgebungsvariablen.

Die Liste der Umgebungsvariablen ist schreibgeschützt und nur auf der Lambda-Konsole verfügbar. Diese Datei ist nicht enthalten, wenn Sie das ZIP-Dateiarchiv der Funktion herunterladen, und Sie können keine Umgebungsvariablen hinzufügen, indem Sie diese Datei hochladen.

AWS CLI

Im folgenden Beispiel werden zwei Umgebungsvariablen für eine Funktion mit dem Namen festgeleg my-function.

aws lambda update-function-configuration \ --function-name my-function \ --environment "Variables={BUCKET=DOC-EXAMPLE-BUCKET,KEY=file.txt}"

Wenn Sie Umgebungsvariablen mit dem update-function-configuration-Befehl anwenden, wird der gesamte Inhalt der Variables-Struktur ersetzt. Um vorhandene Umgebungsvariablen beibehalten, wenn Sie eine neue hinzufügen, schließen Sie alle vorhandenen Werte in Ihre Anforderung ein.

Mit dem get-function-configuration-Befehl können Sie die aktuelle Konfiguration abrufen.

aws lambda get-function-configuration \ --function-name my-function

Die Ausgabe sollte folgendermaßen aussehen:

{ "FunctionName": "my-function", "FunctionArn": "arn:aws:lambda:us-east-2:111122223333:function:my-function", "Runtime": "nodejs20.x", "Role": "arn:aws:iam::111122223333:role/lambda-role", "Environment": { "Variables": { "BUCKET": "DOC-EXAMPLE-BUCKET", "KEY": "file.txt" } }, "RevisionId": "0894d3c1-2a3d-4d48-bf7f-abade99f3c15", ... }

Sie können die Revisions-ID aus der Ausgabe von get-function-configuration als Parameter an update-function-configuration übergeben. Dadurch wird sichergestellt, dass sich die Werte zwischen dem Lesen und dem Aktualisieren der Konfiguration nicht ändern.

Um den Verschlüsselungsschlüssel einer Funktion zu konfigurieren, legen Sie die KMSKeyARN-Option fest.

aws lambda update-function-configuration \ --function-name my-function \ --kms-key-arn arn:aws:kms:us-east-2:111122223333:key/055efbb4-xmpl-4336-ba9c-538c7d31f599
AWS SAM

Sie können die verwenden AWS Serverless Application Model, um Umgebungsvariablen für Ihre Funktion zu konfigurieren. Aktualisieren Sie die Eigenschaften Umgebung und Variablen in Ihrer template.yaml Datei und führen Sie dann sam deploy aus.

Beispiel template.yaml
AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Description: An AWS Serverless Application Model template describing your function. Resources: my-function: Type: AWS::Serverless::Function Properties: CodeUri: . Description: '' MemorySize: 128 Timeout: 120 Handler: index.handler Runtime: nodejs18.x Architectures: - x86_64 EphemeralStorage: Size: 10240 Environment: Variables: BUCKET: DOC-EXAMPLE-BUCKET KEY: file.txt # Other function properties...
AWS SDKs

Verwenden Sie die folgenden API-Operationen, um Umgebungsvariablen mithilfe eines AWS SDK zu verwalten.

Weitere Informationen finden Sie in der AWS SDK-Dokumentation für Ihre bevorzugte Programmiersprache.

Definierte Laufzeitumgebungsvariablen

Lambda Laufzeiten setzen mehrere Umgebungsvariablen während der Initialisierung. Die meisten Umgebungsvariablen stellen Informationen über die Funktion oder Laufzeit bereit. Die Schlüssel für diese Umgebungsvariablen sind reserviert und können nicht in der Funktionskonfiguration gesetzt werden.

Reservierte Umgebungsvariablen
  • _HANDLER – Der für die Funktion konfigurierte Handler-Speicherort.

  • _X_AMZN_TRACE_ID – Die X-Ray-Tracing-Header. Diese Umgebungsvariable ändert sich bei jedem Aufruf.

    • Diese Umgebungsvariable ist nicht für reine OS-Laufzeiten (die provided-Laufzeitfamilie) definiert. Sie können _X_AMZN_TRACE_ID für benutzerdefinierte Laufzeiten einstellen, indem Sie den Antwort-Header Lambda-Runtime-Trace-Id der Nächster Aufruf verwenden.

    • Für die Java-Laufzeit-Versionen 17 und höher wird diese Umgebungsvariable nicht verwendet. Stattdessen speichert Lambda Ablaufverfolgungsinformationen in der Systemeigenschaft com.amazonaws.xray.traceHeader.

  • AWS_DEFAULT_REGION— Die Standardeinstellung AWS-Region , in der die Lambda-Funktion ausgeführt wird.

  • AWS_REGION— Der AWS-Region Ort, an dem die Lambda-Funktion ausgeführt wird. Wenn eingegeben, überschreibt dieser Wert die AWS_DEFAULT_REGION.

    • Weitere Informationen zur Verwendung der AWS-Region Umgebungsvariablen mit AWS SDKs finden Sie unter AWS Region im Referenzhandbuch für AWS SDKs und Tools.

  • AWS_EXECUTION_ENVDie Laufzeit-Kennung mit dem Präfix AWS_Lambda_ z. B. AWS_Lambda_java8. Diese Umgebungsvariable ist nicht für reine OS-Laufzeiten (die provided-Laufzeitfamilie) definiert.

  • AWS_LAMBDA_FUNCTION_NAME – Der Name der Funktion.

  • AWS_LAMBDA_FUNCTION_MEMORY_SIZE – Die Menge des für die Funktion verfügbaren Speichers in MB.

  • AWS_LAMBDA_FUNCTION_VERSION – Die Version der Funktion, die gerade ausgeführt wird.

  • AWS_LAMBDA_INITIALIZATION_TYPE – Der Initialisierungstyp der Funktion, der on-demand, provisioned-concurrency oder snap-start ist. Weitere Informationen finden Sie unter Konfigurieren der bereitgestellten Gleichzeitigkeit oder unter Verbesserung der Startleistung mit Lambda SnapStart.

  • AWS_LAMBDA_LOG_GROUP_NAME, AWS_LAMBDA_LOG_STREAM_NAME — Der Name der Amazon CloudWatch Logs-Gruppe und des Streams für die Funktion. Die AWS_LAMBDA_LOG_STREAM_NAME Umgebungsvariablen AWS_LAMBDA_LOG_GROUP_NAME und sind in SnapStart Lambda-Funktionen nicht verfügbar.

  • AWS_ACCESS_KEY, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN – Die Zugriffsschlüssel, die über die Ausführungsrolle der Funktion bezogen wurden.

  • AWS_LAMBDA_RUNTIME_API – (Benutzerdefinierte Laufzeit) Host und Port der Laufzeit-API.

  • LAMBDA_TASK_ROOT – Der Pfad zu Ihrem Lambda-Funktionscode.

  • LAMBDA_RUNTIME_DIR – Der Pfad zu Laufzeitbibliotheken.

Die folgenden zusätzlichen Umgebungsvariablen sind nicht vorbehalten und können in Ihrer Funktionskonfiguration erweitert werden.

Nicht reservierte Umgebungsvariablen
  • LANG – Das Gebietsschema der Laufzeit (en_US.UTF-8).

  • PATH – Der Ausführungspfad (/usr/local/bin:/usr/bin/:/bin:/opt/bin).

  • LD_LIBRARY_PATH – Der Pfad der Systembibliothek (/var/lang/lib:/lib64:/usr/lib64:$LAMBDA_RUNTIME_DIR:$LAMBDA_RUNTIME_DIR/lib:$LAMBDA_TASK_ROOT:$LAMBDA_TASK_ROOT/lib:/opt/lib).

  • NODE_PATH – (Node.js) Der Node.js-Bibliothekspfad (/opt/nodejs/node12/node_modules/:/opt/nodejs/node_modules:$LAMBDA_RUNTIME_DIR/node_modules).

  • PYTHONPATH – (Python 2.7, 3.6, 3.8) Der Python-Bibliothekspfad ($LAMBDA_RUNTIME_DIR).

  • GEM_PATH – (Ruby) Der Pfad der Ruby-Bibliothek ($LAMBDA_TASK_ROOT/vendor/bundle/ruby/2.5.0:/opt/ruby/gems/2.5.0).

  • AWS_XRAY_CONTEXT_MISSING – Für die X-Ray-Ablaufverfolgung legt Lambda dies auf LOG_ERROR fest, um Laufzeitfehler aus dem X-Ray-SDK zu vermeiden.

  • AWS_XRAY_DAEMON_ADDRESS – Die IP-Adresse und der Port des X-Ray-Daemons.

  • AWS_LAMBDA_DOTNET_PREJIT: Legen Sie diese Variable für die .NET 6- und die .NET 7-Laufzeit fest, um .NET-spezifische Laufzeitoptimierungen zu aktivieren oder zu deaktivieren. Zu den Werten gehören always, never und provisioned-concurrency. Weitere Informationen finden Sie unter Konfiguration der bereitgestellten Parallelität für eine Funktion.

  • TZ – Die Zeitzone der Umgebung (:UTC). Die Ausführungsumgebung verwendet NTP, um die Systemuhr zu synchronisieren.

Die angezeigten Beispielwerte spiegeln die neuesten Laufzeiten wider. Das Vorhandensein bestimmter Variablen oder deren Werte kann je nach früheren Laufzeiten unterschiedlich sein.

Beispielszenario für Umgebungsvariablen

Sie können Umgebungsvariablen verwenden, um das Funktionsverhalten in Ihrer Testumgebung und Produktionsumgebung anzupassen. Zum Beispiel können Sie zwei Funktionen mit demselben Code aber mit unterschiedlichen Konfigurationen erstellen. Die eine Funktion stellt eine Verbindung mit einer Testdatenbank und die andere mit einer Produktionsdatenbank her. In diesem Fall verwenden Sie Umgebungsvariablen, um den Hostnamen und andere Verbindungsdetails für die Datenbank an die Funktion zu übergeben.

Das folgende Beispiel zeigt, wie der Datenbankhost und der Datenbankname als Umgebungsvariablen definiert werden.

Umgebungsvariablen in der Lambda-Konsole.

Wenn Ihre Testumgebung mehr Debugging-Informationen generieren soll als die Produktionsumgebung, können Sie eine Umgebungsvariable festlegen, um Ihre Testumgebung so zu konfigurieren, dass eine ausführlichere Protokollierung oder eine detailliertere Ablaufverfolgung verwendet wird.