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.
Log-level filtern
Lambda kann die Protokolle Ihrer Event-Funktion filtern, sodass nur Protokolle mit einer bestimmten Detailebene oder niedriger an CloudWatch Logs gesendet werden. Sie können die Filterung auf Protokollebene separat für die Systemprotokolle (die von Lambda generierten Protokolle) und Anwendungsprotokolle (die Protokolle, die Ihr Eventfunktionscode generiert) Ihrer Event Function konfigurieren.
Denn Unterstützte Laufzeiten und Protokollierungsmethoden Sie müssen keine Änderungen an Ihrem Event-Funktionscode für Lambda vornehmen, um die Anwendungsprotokolle Ihrer Event-Funktion zu filtern.
Für alle anderen Laufzeiten und Protokollierungsmethoden muss Ihr Event-Funktionscode Log-Ereignisse in stdout oder stderr als JSON-formatierte Objekte ausgeben, die ein Schlüssel-Wert-Paar mit dem Schlüssel enthalten. "level" Lambda interpretiert beispielsweise die folgende Ausgabe an stdout als ein Protokoll auf Ebene DEBUG.
print('{"level": "debug", "msg": "my debug log", "timestamp": "2024-11-02T16:51:31.587199Z"}')Wenn das "level" Wertfeld ungültig ist oder fehlt, weist Lambda der Protokollausgabe die Stufe INFO zu. Damit Lambda das Zeitstempelfeld verwenden kann, müssen Sie die Zeit im gültigen RFC 3339
Halten Sie sich bei der Benennung des Zeitstempelschlüssels an die Benennungskonventionen der Laufzeit, die Sie verwenden. Lambda unterstützt die meisten gängigen Namenskonventionen, die von den verwalteten Laufzeiten verwendet werden.
Anmerkung
Um die Filterung auf Protokollebene verwenden zu können, muss Ihre Event-Funktion so konfiguriert sein, dass sie das JSON-Protokollformat verwendet. Derzeit ist das Standard-Protokollformat für alle verwalteten Lambda-Laufzeiten das Klartextformat. Informationen zur Konfiguration des Protokollformats Ihrer Event-Funktion auf JSON finden Sie unter. Das Protokollformat Ihrer Event-Funktion festlegen
Bei Anwendungsprotokollen (den durch Ihren Funktionscode generierten Protokollen) können Sie zwischen den folgenden Protokollebenen wählen.
| Protokollebene | Standardnutzung |
|---|---|
| TRACE (am detailliertesten) | Die detailliertesten Informationen, die verwendet werden, um den Ausführungspfad Ihres Codes nachzuverfolgen |
| DEBUG | Detaillierte Informationen für das System-Debugging |
| INFO | Meldungen, die den normalen Betrieb Ihrer Funktion erfassen |
| WARN | Meldungen über potenzielle Fehler, die zu unerwartetem Verhalten führen können, wenn sie nicht behoben werden |
| ERROR | Meldungen über Probleme, die verhindern, dass der Code wie erwartet funktioniert |
| FATAL (am wenigsten Details) | Meldungen über schwerwiegende Fehler, die dazu führen, dass die Anwendung nicht mehr funktioniert |
Wenn Sie eine Protokollebene auswählen, sendet Lambda Protokolle auf dieser Ebene und niedriger an CloudWatch Logs. Wenn Sie beispielsweise die Anwendungsprotokollebene einer Ereignisfunktion auf WARN setzen, sendet Lambda keine Protokollausgaben auf den Ebenen INFO und DEBUG. Die Standardebene des Anwendungsprotokolls für die Protokollfilterung ist INFO.
Wenn Lambda die Anwendungsprotokolle Ihrer Event Function filtert, wird Protokollnachrichten ohne Stufe die Protokollebene INFO zugewiesen.
Für Systemprotokolle (die vom Lambda-Service generierten Protokolle) können Sie zwischen den folgenden Protokollebenen wählen.
| Protokollebene | Usage |
|---|---|
| DEBUG (am detailliertesten) | Detaillierte Informationen für das System-Debugging |
| INFO | Meldungen, die den normalen Betrieb Ihrer Funktion erfassen |
| WARN (am wenigsten Details) | Meldungen über potenzielle Fehler, die zu unerwartetem Verhalten führen können, wenn sie nicht behoben werden |
Wenn Sie eine Protokollebene auswählen, sendet Lambda Protokolle auf dieser Ebene und niedriger. Wenn Sie beispielsweise die Systemprotokollebene einer Event-Funktion auf INFO setzen, sendet Lambda keine Protokollausgaben auf der DEBUG-Ebene.
Standardmäßig setzt Lambda die Protokollebene des Systems auf INFO. Mit dieser Einstellung sendet "start" und "report" protokolliert Lambda automatisch Nachrichten an CloudWatch. Um mehr oder weniger detaillierte Systemprotokolle zu erhalten, ändern Sie die Protokollebene in DEBUG oder WARN. Eine Liste der Protokollebenen, denen Lambda verschiedene Systemprotokollereignisse zuordnet, finden Sie unter Zuordnung von Ereignissen auf Systemprotokollebene.
Konfigurieren der Filterung auf Protokollebene
Um die Filterung auf Anwendungs- und Systemprotokollebene für Ihre Event Function zu konfigurieren, können Sie die Lambda-Konsole oder die AWS Command Line Interface () verwenden.AWS CLI Sie können die Protokollebene einer Event-Funktion auch mithilfe der API-Befehle CreateFunctionund UpdateFunctionConfigurationLambda, der Ressource AWS Serverless Application Model (AWS SAM) AWS::Serverless: :Function und der Ressource CloudFormation AWS::Lambda: :Function konfigurieren.
Beachten Sie, dass, wenn Sie die Protokollebene Ihrer Ereignisfunktion in Ihrem Code festlegen, diese Einstellung Vorrang vor allen anderen von Ihnen konfigurierten Einstellungen auf Protokollebene hat. Wenn Sie beispielsweise die logging setLevel() Python-Methode verwenden, um die Protokollierungsebene Ihrer Event-Funktion auf INFO zu setzen, hat diese Einstellung Vorrang vor der Einstellung WARN, die Sie mit der Lambda-Konsole konfigurieren.
Um die Anwendungs- oder Systemprotokollebene (Konsole) einer vorhandenen Event-Funktion zu konfigurieren
Öffnen Sie die Seite Event Functions
der Lambda-Konsole. -
Wählen Sie eine Event-Funktion aus.
-
Wählen Sie auf der Konfigurationsseite für die Ereignisfunktion die Option Überwachungs- und Betriebstools aus.
-
Wählen Sie im Bereich Protokollierungskonfiguration die Option Bearbeiten aus.
-
Stellen Sie sicher, dass unter Protokollinhalt für Protokollformat JSON ausgewählt ist.
-
Wählen Sie mithilfe der Optionsfelder die gewünschte Anwendungsprotokollebene und die gewünschte Systemprotokollebene für Ihre Ereignisfunktion aus.
-
Wählen Sie Speichern.
Um die Anwendungs- oder Systemprotokollebene einer vorhandenen Funktion zu konfigurieren (AWS CLI)
-
Verwenden Sie den Befehl update-function-configuration
, um die Anwendungs- oder Systemprotokollebene einer vorhandenen Funktion zu ändern. Verwenden Sie --logging-config, umSystemLogLevelauf einen der WerteDEBUG,INFOoderWARNzu setzen. Legen SieApplicationLogLevelaufDEBUG,INFO,WARN,ERRORoderFATALfest.aws lambda update-function-configuration \ --function-name myFunction \ --logging-config LogFormat=JSON,ApplicationLogLevel=ERROR,SystemLogLevel=WARN
So konfigurieren Sie die Filterung auf Protokollebene beim Erstellen einer Funktion
-
Um die Filterung der Protokollebene zu konfigurieren, wenn Sie eine neue Funktion erstellen, verwenden Sie
--logging-config, um die TastenSystemLogLevelundApplicationLogLevelim Befehl create-functionzu setzen. Legen Sie SystemLogLevelaufDEBUG,INFOoderWARNfest. Legen SieApplicationLogLevelaufDEBUG,INFO,WARN,ERRORoderFATALfest.aws lambda create-function \ --function-name myFunction \ --runtime nodejs24.x \ --handler index.handler \ --zip-file fileb://function.zip \ --role arn:aws:iam::123456789012:role/LambdaRole \ --logging-config LogFormat=JSON,ApplicationLogLevel=ERROR,SystemLogLevel=WARN
Zuordnung von Ereignissen auf Systemprotokollebene
Für von Lambda generierte Protokollereignisse auf Systemebene ist in der folgenden Tabelle die Protokollebene definiert, die jedem Ereignis zugewiesen ist. Weitere Informationen zu den in der Tabelle aufgeführten Ereignissen finden Sie unter Lambda-Telemetrie-API-Ereignisschemareferenz
| Ereignisname | Bedingung | Zugewiesene Protokollebene |
|---|---|---|
| initStart | „runtimeVersion“ ist festgelegt | INFO |
| initStart | „runtimeVersion“ ist nicht festgelegt | DEBUG |
| init RuntimeDone | status=success | DEBUG |
| init RuntimeDone | status!=success | WARN |
| initReport | initializationType!=on-demand | INFO |
| initReport | initializationType=on-demand | DEBUG |
| initReport | status!=success | WARN |
| restoreStart | „runtimeVersion“ ist festgelegt | INFO |
| restoreStart | „runtimeVersion“ ist nicht festgelegt | DEBUG |
| wiederherstellen RuntimeDone | status=success | DEBUG |
| wiederherstellen RuntimeDone | status!=success | WARN |
| restoreReport | status=success | INFO |
| restoreReport | status!=success | WARN |
| start | - | INFO |
| runtimeDone | status=success | DEBUG |
| runtimeDone | status!=success | WARN |
| report | status=success | INFO |
| report | status!=success | WARN |
| extension | state=success | INFO |
| extension | state!=success | WARN |
| logSubscription | - | INFO |
| telemetrySubscription | - | INFO |
| logsDropped | - | WARN |
Anmerkung
Die Zugriff auf Echtzeit-Telemetriedaten für Erweiterungen über die Telemetrie-API gibt immer den vollständigen Satz von Plattformereignissen aus. Die Konfiguration der Ebene der Systemprotokolle, an die Lambda sendet, CloudWatch hat keinen Einfluss auf das Verhalten der Lambda-Telemetrie-API.
Filterung auf Anwendungsprotokollebene mit benutzerdefinierten Laufzeiten
Wenn Sie die Filterung auf Anwendungsprotokollebene für Ihre Event Function konfigurieren, legt Lambda hinter den Kulissen die Anwendungsprotokollebene in der Laufzeit mithilfe der AWS_LAMBDA_LOG_LEVEL Umgebungsvariablen fest. Lambda legt auch das Protokollformat Ihrer Event-Funktion mithilfe der AWS_LAMBDA_LOG_FORMAT Umgebungsvariablen fest. Sie können diese Variablen verwenden, um erweiterte Lambda-Protokollierungsoptionen in eine benutzerdefinierte Laufzeit zu integrieren.
Um Protokollierungseinstellungen für eine Event-Funktion mithilfe einer benutzerdefinierten Laufzeit mit der Lambda-Konsole und Lambda-APIs konfigurieren zu können AWS CLI, konfigurieren Sie Ihre benutzerdefinierte Laufzeit so, dass sie den Wert dieser Umgebungsvariablen überprüft. Anschließend können Sie die Logger Ihrer Laufzeit gemäß dem von Ihnen ausgewählten Protokollformat und den von Ihnen ausgewählten Protokollebenen konfigurieren.