View a markdown version of this page

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.

Umgebungsvariablen

Umgebungsvariablen sind Schlüssel-Wert-Paare, die zur Laufzeit für Ihren Anwendungscode verfügbar sind. Verwenden Sie Umgebungsvariablen für nicht sensible Konfigurationen, die Sie ändern möchten, ohne den Code zu ändern, z. B. Feature-Flags, Protokollebenen und Ressourcenbezeichner wie einen Datenbank-Hostnamen. Speichern Sie sensible Werte wie API-Schlüssel und Datenbankanmeldedaten nicht in Umgebungsvariablen. Verwenden Sie stattdessen Secrets Manager oder AWS Systems Manager Parameter Store und rufen Sie die Werte zur Laufzeit ab.

Umgebungsvariablen werden bei der Erstellung der Revision festgelegt und sind nach der Erstellung unveränderlich. Um eine Umgebungsvariable zu ändern, erstellen Sie eine neue Revision. Geben Sie in der neuen Version jede Umgebungsvariable und jede serviceConfig Einstellung an, die Sie beibehalten möchten, nicht nur die Werte, die sich ändern. Einstellungen, die Sie auslassen, erhalten ihre Standardwerte, und Umgebungsvariablen, die Sie auslassen, sind nicht festgelegt.

Lambda legt die folgende Umgebungsvariable speziell für Webfunktionen fest:

  • AWS_LAMBDA_HTTP_ENDPOINT— Der Host und der Port, auf die Ihr HTTP-Server warten muss, im host:port Format. Lambda setzt diese Variable und leitet Anfragen an diese Adresse weiter. Lesen Sie es in Ihrem Anwendungscode und binden Sie genau diesen Host und Port. Sie können diese Variable nicht in den Umgebungsvariablen einer Revision setzen. Binden Sie immer an die Adresse in dieser Variablen, nicht localhost an einen fest codierten Port. Die Runtime wartet darauf, dass Ihr Server eine Verbindung an dieser Adresse akzeptiert, und die Initialisierung schlägt fehl, falls dies nie der Fall ist. Verwenden Sie eine Fallback-Adresse nur für lokale Läufe. In einer Webfunktion legt Lambda immer diese Variable fest.

Webfunktionen empfangen auch andere Lambda-Laufzeitumgebungsvariablen wie AWS_LAMBDA_FUNCTION_MEMORY_SIZEAWS_LAMBDA_METADATA_API, undAWS_LAMBDA_METADATA_TOKEN. Eine allgemeine Liste finden Sie unterDefinierte Laufzeitumgebungsvariablen. Wenn Ihr Code oder eine Bibliothek eine Variable aus dieser Liste liest, stellen Sie sicher, dass Lambda sie in einer Webfunktion festlegt, bevor Sie sich darauf verlassen. Webfunktionen empfangen nicht jede Variable in dieser Liste.

Die folgenden Namen von Umgebungsvariablen sind für Lambda-Webfunktionen reserviert und können nicht festgelegt werden. Wenn Sie eine angeben, lehnt Lambda die Anforderung ab, eine Webfunktion oder Revision zu erstellen:

  • AWS_ACCESS_KEY, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SECRET_KEY, AWS_SECURITY_TOKEN, und AWS_SESSION_TOKEN

  • AWS_DEFAULT_REGION und AWS_REGION

  • AWS_LAMBDA_HTTP_ENDPOINT, AWS_LAMBDA_RUNTIME_API, AWS_LAMBDA_INITIALIZATION_TYPE, und AWS_LAMBDA_FUNCTION_MEMORY_SIZE

  • AWS_LAMBDA_METADATA_API und AWS_LAMBDA_METADATA_TOKEN

Einige Frameworks lesen stattdessen ihre eigenen Umgebungsvariablen für die Listen-Adresse. Zum Beispiel liest der Next.js Standalone-Modus HOSTNAME undPORT. Verwenden Sie für solche Frameworks eine index.js Eintragsdatei, die diese Variablen festlegt, AWS_LAMBDA_HTTP_ENDPOINT bevor Sie den Server starten.

Standardmäßig wird die Runtime index.js im Stammverzeichnis Ihres Bereitstellungspakets als Eingabedatei Ihrer Anwendung geladen. Die Runtime liest den Einstiegspunkt nicht vonpackage.json. Wenn Ihre Eintragsdatei einen anderen Namen oder Pfad hat (z. B.dist/index.js), setzen Sie die AWS_LAMBDA_NODEJS_ENTRYPOINT Umgebungsvariable auf ihren Pfad relativ zum Stammverzeichnis Ihres Pakets.

Das folgende Beispiel zeigt, wie die AWS_LAMBDA_HTTP_ENDPOINT Umgebungsvariable in einer Node.js Anwendung gelesen wird:

// Lambda provides the address to bind in AWS_LAMBDA_HTTP_ENDPOINT ("host:port"). // The fallback applies only when running locally. const [host, port] = (process.env.AWS_LAMBDA_HTTP_ENDPOINT || 'localhost:3000').split(':'); app.listen(port, host, () => { console.log(`Server listening on ${host}:${port}`); });

Um Ihre eigenen Umgebungsvariablen festzulegen, fügen Sie dem serviceConfig Objekt eine environmentVariables Map hinzu, wenn Sie eine Revision erstellen, wie im folgenden Beispiel. Den vollständigen Befehl finden Sie unterEine Revision erstellen.

{ "executionRoleArn": "arn:aws:iam::111122223333:role/my-web-function-role", "environmentVariables": { "DATABASE_URL": "my-database-endpoint", "LOG_LEVEL": "info", "FEATURE_FLAG_NEW_UI": "true" } }

Wenn Sie einen vom Kunden verwalteten Schlüssel angeben, verschlüsselt Lambda die ruhenden Umgebungsvariablen mit diesem Schlüssel. Weitere Informationen finden Sie unter Verschlüsselung im Ruhezustand für Webfunktionen.