Verwenden von Lambda-Umgebungsvariablen - 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 von Lambda-Umgebungsvariablen

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 Datenbanksicherheit zu erhöhen, empfehlen wir, AWS Secrets Manager anstelle von Umgebungsvariablen zum Speichern von Datenbankanmeldeinformationen zu verwenden. Weitere Informationen finden Sie unter Verwenden von AWS Lambda mit Amazon RDS.

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.

Konfigurieren von Umgebungsvariablen (Konsole)

Sie definieren Umgebungsvariablen für die unveröffentlichte Version Ihrer Funktion. Wenn Sie eine Version veröffentlichen, werden die Umgebungsvariablen für diese Version zusammen mit anderen versionsspezifischen Konfigurationseinstellungen 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 Sichern von 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.

Konfigurieren von Umgebungsvariablen (API)

Verwenden Sie die folgenden API-Operationen, um Umgebungsvariablen mit der AWS CLI oder dem AWS SDK zu verwalten.

Konfigurieren von Umgebungsvariablen (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=my-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": "my-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

Konfigurieren von Umgebungsvariablen (AWS SAM)

Sie können die verwendenAWS Serverless Application Model, um Umgebungsvariablen für Ihre Funktion zu konfigurieren. Aktualisieren Sie die Umgebungs- und Variableneigenschaften 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: my-bucket KEY: file.txt # Other function properties...

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.

Abrufen von Umgebungsvariablen

Umgebungsvariablen in Ihrem Funktionscode können Sie mit der Standardmethode für Ihre Programmiersprache abrufen.

Node.js
let region = process.env.AWS_REGION
Python
import os region = os.environ['AWS_REGION']
Anmerkung

In einigen Fällen müssen Sie möglicherweise das folgende Format verwenden:

region = os.environ.get('AWS_REGION')
Ruby
region = ENV["AWS_REGION"]
Java
String region = System.getenv("AWS_REGION");
Go
var region = os.Getenv("AWS_REGION")
C#
string region = Environment.GetEnvironmentVariable("AWS_REGION");
PowerShell
$region = $env:AWS_REGION

Lambda speichert Umgebungsvariablen sicher, indem sie im Ruhezustand verschlüsselt werden. Sie können Lambda so konfigurieren, dass ein anderer Verschlüsselungsschlüssel verwendet wird, Umgebungsvariablenwerte clientseitig verschlüsselt werden oder Umgebungsvariablen in einer - AWS CloudFormation Vorlage mit festgelegt werden AWS Secrets Manager.

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 – Der Standardwert AWS-Region , in dem die Lambda-Funktion ausgeführt wird.

  • AWS_REGION – Die AWS-Region , in der 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 AWS Referenzhandbuch für -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 Lambda- SnapStart 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 Konfigurieren von Provisioned Concurrency.

  • 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.

Sichern von Umgebungsvariablen

Sie können Ihre Umgebungsvariablen sichern, können Sie eine serverseitige Verschlüsselung nutzen, um Ihre Data-at-Rest zu schützen und eine clientseitige Verschlüsselung, um Ihre Daten während der Übertragung zu schützen.

Anmerkung

Um die Datenbanksicherheit zu erhöhen, empfehlen wir, AWS Secrets Manager anstelle von Umgebungsvariablen zum Speichern von Datenbankanmeldeinformationen zu verwenden. Weitere Informationen finden Sie unter Verwenden von AWS Lambda mit Amazon RDS.

Sicherheit im Ruhezustand

Lambda bietet im Ruhezustand immer serverseitiger Verschlüsselung mit einem AWS KMS key an. Standardmäßig verwendet Lambda einen Von AWS verwalteter Schlüssel. Wenn dieses Standardverhalten Ihrem Workflow entspricht, müssen Sie nichts anderes einrichten. Lambda erstellt die Von AWS verwalteter Schlüssel in Ihrem Konto und verwaltet die Berechtigungen dafür für Sie. AWS berechnet Ihnen keine Gebühren für die Verwendung dieses Schlüssels.

Wenn Sie möchten, können Sie stattdessen einen vom AWS KMS Kunden verwalteten Schlüssel angeben. Sie können dies tun, um die Drehung des KMS-Schlüssels zu steuern oder die Anforderungen Ihrer Organisation für die Verwaltung von KMS-Schlüsseln zu erfüllen. Wenn Sie einen vom Kunden verwalteten Schlüssel verwenden, können nur Benutzer in Ihrem Konto mit Zugriff auf den KMS-Schlüssel Umgebungsvariablen für die Funktion anzeigen oder verwalten.

Für vom Kunden verwaltete Schlüssel fallen AWS KMS Standardgebühren an. Weitere Informationen finden Sie unter AWS Key Management Service Preise.

Sicherheit während der Übertragung

Für zusätzliche Sicherheit können Sie Helfer für die Verschlüsselung bei der Übertragung aktivieren, wodurch sichergestellt wird, dass Ihre Umgebungsvariablen clientseitig verschlüsselt sind, um sie während der Übertragung zu schützen.

So konfigurieren Sie die Verschlüsselung für Ihre Umgebungsvariablen
  1. Verwenden Sie die AWS Key Management Service (AWS KMS), um alle vom Kunden verwalteten Schlüssel für Lambda zu erstellen, die für die serverseitige und clientseitige Verschlüsselung verwendet werden sollen. Weitere Informationen finden Sie unter Erstellen von Schlüsseln im AWS Key Management Service -Entwicklerhandbuch.

  2. Navigieren Sie mithilfe der Lambda-Konsole zur Seite Umgebungsvariablen bearbeiten.

    1. Öffnen Sie die Seite Funktionen der Lambda-Konsole.

    2. Wählen Sie eine Funktion aus.

    3. Wählen Sie Konfiguration und dann Umgebungsvariablen aus der linken Navigationsleiste.

    4. Wählen Sie im Abschnitt Umgebungsvariablen Bearbeiten aus.

    5. Erweitern Sie Encryption configuration (Verschlüsselungskonfiguration).

  3. (Optional) Aktivieren Sie Konsolenverschlüsselungshelfer, um die clientseitige Verschlüsselung zu verwenden, um Ihre Daten während der Übertragung zu schützen.

    1. Wählen Sie unter Verschlüsselung während der Übertragung die Option Helfer für die Verschlüsselung während der Übertragung aktivieren aus.

    2. Wählen Sie für jede Umgebungsvariable, für die Sie Konsolenverschlüsselungshilfen aktivieren möchten, neben der Umgebungsvariablen die Option Encrypt (Verschlüsseln) aus.

    3. Wählen Sie unter AWS KMS key zur Verschlüsselung während der Übertragung einen vom Kunden verwalteten Schlüssel aus, den Sie zu Beginn dieses Verfahrens erstellt haben.

    4. Wählen Sie Ausführungsrollenrichtlinie und kopieren Sie die Richtlinie. Diese Richtlinie gewährt der Ausführungsrolle Ihrer Funktion die Berechtigung zum Entschlüsseln der Umgebungsvariablen.

      Speichern Sie diese Richtlinie zur Verwendung im letzten Schritt dieses Verfahrens.

    5. Fügen Sie Ihrer Funktion Code hinzu, der die Umgebungsvariablen entschlüsselt. Wählen Sie Geheimnisausschnitt entschlüsseln, um ein Beispiel anzuzeigen.

  4. (Optional) Geben Sie Ihren kundenverwalteten Schlüssel zur Verschlüsselung im Ruhezustand an.

    1. Wählen Sie Kundenmasterschlüssel verwenden aus.

    2. Wählen Sie einen vom Kunden verwalteten Schlüssel aus, den Sie zu Beginn dieses Verfahrens erstellt haben.

  5. Wählen Sie Speichern.

  6. Richten Sie Berechtigungen ein.

    Wenn Sie einen vom Kunden verwalteten Schlüssel mit serverseitiger Verschlüsselung verwenden, erteilen Sie allen Benutzern oder Rollen Berechtigungen zum Anzeigen oder Verwalten von Umgebungsvariablen für die Funktion. Weitere Informationen finden Sie unter Verwalten von Berechtigungen für den serverseitigen Verschlüsselungs-KMS-Schlüssel.

    Wenn Sie die clientseitige Verschlüsselung für die Sicherheit während der Übertragung aktivieren, benötigt Ihre Funktion die Berechtigung zum Aufrufen der kms:Decrypt-API-Operation. Fügen Sie die Richtlinie, die Sie zuvor in diesem Verfahren gespeichert haben, zur Ausführungsrolle der Funktion hinzu.

Verwalten von Berechtigungen für den serverseitigen Verschlüsselungs-KMS-Schlüssel

Es sind keine AWS KMS Berechtigungen erforderlich, damit Ihr Benutzer oder die Ausführungsrolle der Funktion den Standardverschlüsselungsschlüssel verwenden kann. Um einen vom kundenverwalteten Schlüssel verwenden zu können, benötigen Sie eine Berechtigungen zur Verwendung des Schlüssels. Lambda erstellt anhand Ihrer Berechtigungen eine Berechtigungserteilung für den Schlüssel. So wird es Lambda ermöglicht, diesen für die Verschlüsselung zu verwenden.

  • kms:ListAliases – Zur Ansicht von Schlüssel in der Lambda-Konsole.

  • kms:CreateGrant, kms:Encrypt – Zum Konfigurieren eines vom Kunden verwalteten Schlüssels für eine Funktion.

  • kms:Decrypt – Zum Anzeigen und Verwalten von Umgebungsvariablen, die mit einem vom Kunden verwalteten Schlüssel verschlüsselt sind.

Sie können diese Berechtigungen von Ihrem AWS-Konto oder von der ressourcenbasierten Berechtigungsrichtlinie eines Schlüssels abrufen. ListAliases wird von den verwalteten Richtlinien für Lambda bereitgestellt. Schlüsselrichtlinien gewähren Benutzern in der Gruppe Key users (Schlüsselbenutzer) die verbleibenden Berechtigungen.

Benutzer ohne Decrypt-Berechtigungen können Funktionen weiterhin verwalten, aber sie können keine Umgebungsvariablen anzeigen oder in der Lambda-Konsole verwalten. Um zu verhindern, dass ein Benutzer Umgebungsvariablen anzeigen kann, fügen Sie den Berechtigungen des Benutzers eine Anweisung hinzu, die den Zugriff auf den Standardschlüssel, einen vom Kunden verwalteten Schlüssel oder alle Schlüssel verweigert.

Beispiel IAM-Richtlinie – Verweigern des Zugriffs nach Schlüssel-ARN
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Deny", "Action": [ "kms:Decrypt" ], "Resource": "arn:aws:kms:us-east-2:111122223333:key/3be10e2d-xmpl-4be4-bc9d-0405a71945cc" } ] }

          Fehlermeldung für Benutzer ohne Entschlüsselungsberechtigungen in der Lambda-Konsole.

Details zum Verwalten von Schlüsselberechtigungen finden Sie unter Key policies in AWS KMS im AWS Key Management Service -Entwicklerhandbuch.

Beispiel-Code und -Vorlagen

Beispielanwendungen im GitHub Repository dieses Handbuchs veranschaulichen die Verwendung von Umgebungsvariablen in Funktionscode und AWS CloudFormation Vorlagen.

Beispielanwendungen
  • Leere Funktion – Erstellen Sie eine grundlegende Funktion, die die Verwendung von Protokollierung, Umgebungsvariablen, AWS X-Ray Ablaufverfolgung, Ebenen, Einheitentests und des AWS SDK zeigt.

  • RDS MySQL – Erstellen Sie eine VPC und eine Instance von Amazon Relational Database Service (Amazon RDS) in einer Vorlage mit einem in Secrets Manager gespeicherten Passwort. Importieren Sie in der Anwendungsvorlage Datenbankdetails aus dem VPC-Stack, lesen Sie das Passwort aus Secrets Manager aus, und übergeben Sie die gesamte Verbindungskonfiguration an die Funktion in Umgebungsvariablen.