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.
Sections
- Konfigurieren von Umgebungsvariablen (Konsole)
- Konfigurieren von Umgebungsvariablen (API)
- Konfigurieren von Umgebungsvariablen (AWS CLI)
- Konfigurieren von Umgebungsvariablen (AWS SAM)
- Beispielszenario für Umgebungsvariablen
- Abrufen von Umgebungsvariablen
- Definierte Laufzeitumgebungsvariablen
- Sichern von Umgebungsvariablen
- Beispiel-Code und -Vorlagen
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
Öffnen Sie die Seite Funktionen
der Lambda-Konsole. -
Wählen Sie eine Funktion aus.
-
Wählen Sie Configuration (Konfiguration) und dann Environment variables (Umgebungsvariablen) aus.
-
Wählen Sie unter Environment variables (Umgebungsvariablen) die Option Edit (Bearbeiten).
-
Wählen Sie Umgebungsvariablen hinzufügen aus.
-
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.
-
-
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.
-
Wählen Sie die Registerkarte Code.
-
Wählen Sie die Registerkarte Umgebungsvariablen.
-
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-arnarn: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.
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.
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-HeaderLambda-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 dieAWS_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_ENV
– Die Laufzeit-Kennung mit dem PräfixAWS_Lambda_
z. B.AWS_Lambda_java8
. Diese Umgebungsvariable ist nicht für reine OS-Laufzeiten (dieprovided
-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, deron-demand
,provisioned-concurrency
odersnap-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. DieAWS_LAMBDA_LOG_STREAM_NAME
UmgebungsvariablenAWS_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 aufLOG_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örenalways
,never
undprovisioned-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
-
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.
-
Navigieren Sie mithilfe der Lambda-Konsole zur Seite Umgebungsvariablen bearbeiten.
Öffnen Sie die Seite Funktionen
der Lambda-Konsole. -
Wählen Sie eine Funktion aus.
-
Wählen Sie Konfiguration und dann Umgebungsvariablen aus der linken Navigationsleiste.
-
Wählen Sie im Abschnitt Umgebungsvariablen Bearbeiten aus.
-
Erweitern Sie Encryption configuration (Verschlüsselungskonfiguration).
-
(Optional) Aktivieren Sie Konsolenverschlüsselungshelfer, um die clientseitige Verschlüsselung zu verwenden, um Ihre Daten während der Übertragung zu schützen.
-
Wählen Sie unter Verschlüsselung während der Übertragung die Option Helfer für die Verschlüsselung während der Übertragung aktivieren aus.
-
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.
-
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.
-
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.
-
Fügen Sie Ihrer Funktion Code hinzu, der die Umgebungsvariablen entschlüsselt. Wählen Sie Geheimnisausschnitt entschlüsseln, um ein Beispiel anzuzeigen.
-
-
(Optional) Geben Sie Ihren kundenverwalteten Schlüssel zur Verschlüsselung im Ruhezustand an.
-
Wählen Sie Kundenmasterschlüssel verwenden aus.
-
Wählen Sie einen vom Kunden verwalteten Schlüssel aus, den Sie zu Beginn dieses Verfahrens erstellt haben.
-
-
Wählen Sie Speichern.
-
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" } ] }
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.