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.
Konfiguration der JSON- und Klartext-Protokollformate
Das Erfassen Ihrer Protokollausgaben als JSON-Schlüsselwertpaare erleichtert das Suchen und Filtern beim Debuggen Ihrer Event-Funktionen. Mit Protokollen im JSON-Format können Sie Ihren Protokollen auch Tags und Kontextinformationen hinzufügen. Das kann Ihnen bei der automatisierten Analyse großer Mengen von Protokolldaten helfen. Sofern Ihr Entwicklungsworkflow nicht auf vorhandenen Tools basiert, die Lambda-Protokolle im Klartext verarbeiten, empfehlen wir Ihnen, JSON als Protokollformat auszuwählen.
Von Lambda verwaltete Instances
Lambda Managed Instances unterstützen nur das JSON-Protokollformat. Wenn Sie eine Funktion für verwaltete Instanzen erstellen, konfiguriert Lambda das Protokollformat automatisch auf JSON, und Sie können es nicht in Klartext ändern. Weitere Informationen zu Managed Instances finden Sie unter. Von Lambda verwaltete Instances
Für alle von Lambda verwalteten Laufzeiten können Sie wählen, ob die Systemprotokolle Ihrer Event Function im unstrukturierten Klartext- oder JSON-Format an CloudWatch Logs gesendet werden. Systemprotokolle sind die von Lambda generierten Protokolle und werden manchmal auch als Plattformereignisprotokolle bezeichnet.
Wenn Sie eine der unterstützten integrierten Protokollierungsmethoden verwenden, kann Lambda für unterstützte Laufzeiten auch die Anwendungsprotokolle Ihrer Event-Funktion (die Protokolle, die Ihr Event-Funktionscode generiert) im strukturierten JSON-Format ausgeben. Wenn Sie das Protokollformat Ihrer Event-Funktion für diese Laufzeiten konfigurieren, gilt die von Ihnen gewählte Konfiguration sowohl für System- als auch für Anwendungsprotokolle.
Wenn Ihre Event-Funktion für unterstützte Laufzeiten eine unterstützte Protokollierungsbibliothek oder -methode verwendet, müssen Sie keine Änderungen an Ihrem vorhandenen Code vornehmen, damit Lambda Logs in strukturiertem JSON erfasst.
Anmerkung
Durch die Verwendung der JSON-Protokollformatierung werden zusätzliche Metadaten hinzugefügt und Protokollmeldungen als JSON-Objekte kodiert, die eine Reihe von Schlüssel-Wert-Paaren enthalten. Aus diesem Grund kann die Größe der Protokollnachrichten Ihrer Event-Funktion zunehmen.
Unterstützte Laufzeiten und Protokollierungsmethoden
Lambda unterstützt derzeit die Option, strukturierte JSON-Anwendungsprotokolle für folgende Laufzeiten auszugeben.
| Sprache | Unterstützte Versionen |
|---|---|
| Java | Alle Java-Laufzeiten außer Java 8 auf Amazon Linux 1 |
| .NET | .NET 8 und höher |
| Node.js | Node.js 16 und später |
| Python | Python 3.8 oder höher |
| Ruby | Ruby 4.0 und höher |
| Rust | n/a |
Damit Lambda die Anwendungsprotokolle Ihrer Event Function CloudWatch im strukturierten JSON-Format senden kann, muss Ihre Event Function die folgenden integrierten Protokollierungstools verwenden, um Logs auszugeben:
-
Java: Der
LambdaLoggerLogger oder Log4j2. Weitere Informationen finden Sie unter Protokollieren und Überwachen von Java-Lambda-Eventfunktionen. -
.NET: Die
ILambdaLoggerInstanz auf dem Kontextobjekt. Weitere Informationen finden Sie unter Protokollieren und Überwachen von C#-Lambda-Ereignisfunktionen. -
Node.js- Die Konsolenmethoden
console.traceconsole.debug,console.log,console.info,console.error, undconsole.warn. Weitere Informationen finden Sie unter Node.js Lambda-Ereignisfunktionen protokollieren und überwachen. -
Python: Die
loggingStandard-Python-Bibliothek. Weitere Informationen finden Sie unter Python-Lambda-Ereignisfunktionen protokollieren und überwachen. -
Ruby: Die
LoggerStandard-Ruby-Bibliothek. Weitere Informationen finden Sie unter Ruby Lambda Event Functions protokollieren und überwachen. -
Rust: Die
tracingKiste. Weitere Informationen finden Sie unter Protokollieren und überwachen Sie die Rust Lambda-Ereignisfunktionen.
Für andere verwaltete Lambda-Laufzeiten unterstützt Lambda derzeit nur nativ die Erfassung von Systemprotokollen im strukturierten JSON-Format. Sie können jedoch weiterhin Anwendungsprotokolle zu jeder Laufzeit im strukturierten JSON-Format erfassen, indem Sie Protokollierungstools wie Powertools für AWS Lambda die Ausgabe von Protokollausgaben im JSON-Format verwenden.
Standardprotokollformate
Derzeit ist das Standard-Protokollformat für alle Lambda-Laufzeiten das Klartextformat. Für Lambda Managed Instances ist das Protokollformat immer JSON und kann nicht geändert werden.
Wenn Sie bereits Logging-Bibliotheken wie Powertools verwenden, AWS Lambda um Ihre Event Function-Logs im strukturierten JSON-Format zu generieren, müssen Sie Ihren Code nicht ändern, wenn Sie die JSON-Protokollformatierung auswählen. Lambda codiert keine Protokolle doppelt, die bereits JSON-kodiert sind, sodass die Anwendungsprotokolle Ihrer Event Function weiterhin wie zuvor erfasst werden.
JSON-Format für Systemprotokolle
Wenn Sie das Protokollformat Ihrer Event-Funktion als JSON konfigurieren, wird jedes Systemprotokollelement (Plattformereignis) als JSON-Objekt erfasst, das Schlüsselwertpaare mit den folgenden Schlüsseln enthält:
-
"time"– die Uhrzeit, zu der die Protokollmeldung generiert wurde -
"type"– die Art des Ereignisses, das protokolliert wird -
"record"– der Inhalt der Protokollausgabe
Das Format des "record"-Werts hängt von der Art des protokollierten Ereignisses ab. Weitere Informationen finden Sie unter Objekttypen für Telemetrie-API-Ereignisse. Weitere Hinweise zu den Protokollebenen, die Systemprotokollereignissen zugewiesen sind, finden Sie unter Zuordnung von Ereignissen auf Systemprotokollebene.
Zum Vergleich zeigen die folgenden beiden Beispiele dieselbe Protokollausgabe sowohl im Klartext- als auch im strukturierten JSON-Format. Beachten Sie, dass Systemprotokollereignisse in den meisten Fällen mehr Informationen enthalten, wenn sie im JSON-Format ausgegeben werden, als wenn sie im Klartext ausgegeben werden.
Beispiel Klartext:
2024-03-13 18:56:24.046000 fbe8c1 INIT_START Runtime Version: python:3.12.v18 Runtime Version ARN: arn:aws:lambda:eu-west-1::runtime:edb5a058bfa782cb9cedc6d534ac8b8c193bc28e9a9879d9f5ebaaf619cd0fc0Beispiel strukturiertes JSON:
{
"time": "2024-03-13T18:56:24.046Z",
"type": "platform.initStart",
"record": {
"initializationType": "on-demand",
"phase": "init",
"runtimeVersion": "python:3.12.v18",
"runtimeVersionArn": "arn:aws:lambda:eu-west-1::runtime:edb5a058bfa782cb9cedc6d534ac8b8c193bc28e9a9879d9f5ebaaf619cd0fc0"
}
}Anmerkung
Die Zugriff auf Echtzeit-Telemetriedaten für Erweiterungen über die Telemetrie-API gibt immer Plattformereignisse wie START und REPORT im JSON-Format aus. Die Konfiguration des Formats der Systemprotokolle, an die Lambda sendet, CloudWatch hat keinen Einfluss auf das Verhalten der Lambda-Telemetrie-API.
JSON-Format für Anwendungsprotokolle
Wenn Sie das Protokollformat Ihrer Event-Funktion als JSON konfigurieren, werden Anwendungsprotokollausgaben, die mit unterstützten Protokollierungsbibliotheken und -methoden geschrieben wurden, als JSON-Objekt erfasst, das Schlüsselwertpaare mit den folgenden Schlüsseln enthält.
-
"timestamp"– die Uhrzeit, zu der die Protokollmeldung generiert wurde -
"level"– die der Meldung zugewiesene Protokollebene -
"message"– der Inhalt der Protokollmeldung -
"requestId"(Python, .NET und Node.js) oder"AWSrequestId"(Java) — die eindeutige Anforderungs-ID für den Aufruf der Event-Funktion
Je nach Laufzeit und Protokollierungsmethode, die Ihre Funktion verwendet, kann dieses JSON-Objekt auch zusätzliche Schlüsselpaare enthalten. Wenn Ihre Funktion beispielsweise console Methoden verwendet Node.js, um Fehlerobjekte mit mehreren Argumenten zu protokollieren, enthält das JSON-Objekt zusätzliche Schlüssel-Wert-Paare mit den Schlüsseln errorMessageerrorType, undstackTrace. Weitere Informationen zu JSON-formatierten Protokollen in verschiedenen Lambda-Laufzeiten finden Sie unter Python-Lambda-Ereignisfunktionen protokollieren und überwachen, Node.js Lambda-Ereignisfunktionen protokollieren und überwachen und Protokollieren und Überwachen von Java-Lambda-Eventfunktionen.
Anmerkung
Der Schlüssel, den Lambda für den Zeitstempelwert verwendet, unterscheidet sich für Systemprotokolle und für Anwendungsprotokolle. Bei Systemprotokollen verwendet Lambda den Schlüssel "time", um die Konsistenz mit der Telemetrie-API aufrechtzuerhalten. Bei Anwendungsprotokollen folgt Lambda den Konventionen der unterstützten Laufzeiten und verwendet "timestamp".
Zum Vergleich zeigen die folgenden beiden Beispiele dieselbe Protokollausgabe sowohl im Klartext- als auch im strukturierten JSON-Format.
Beispiel Klartext:
2024-10-27T19:17:45.586Z 79b4f56e-95b1-4643-9700-2807f4e68189 INFO some log messageBeispiel strukturiertes JSON:
{
"timestamp":"2024-10-27T19:17:45.586Z",
"level":"INFO",
"message":"some log message",
"requestId":"79b4f56e-95b1-4643-9700-2807f4e68189"
}Das Protokollformat Ihrer Event-Funktion festlegen
Um das Protokollformat für Ihre Event-Funktion zu konfigurieren, können Sie die Lambda-Konsole oder die AWS Command Line Interface (AWS CLI) verwenden. Sie können das Protokollformat 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.
Das Ändern des Protokollformats Ihrer Event-Funktion hat keine Auswirkungen auf bestehende Protokolle, die in Logs gespeichert sind. CloudWatch Nur neue Protokolle verwenden das aktualisierte Format.
Wenn Sie das Protokollformat Ihrer Event-Funktion in JSON ändern und keine Protokollebene festlegen, setzt Lambda die Anwendungsprotokollebene und die Systemprotokollebene Ihrer Event-Funktion automatisch auf INFO. Das bedeutet, dass Lambda nur Protokollausgaben der Stufe INFO und niedriger an CloudWatch Logs sendet. Weitere Informationen zur Filterung auf Anwendungs- und Systemprotokollebene finden Sie unter Log-level filtern
Anmerkung
Wenn für Python-Laufzeiten das Protokollformat Ihrer Event-Funktion auf Klartext gesetzt ist, ist die Standardeinstellung auf Protokollebene WARN. Das bedeutet, dass Lambda nur Protokollausgaben der Stufe WARN und niedriger an CloudWatch Logs sendet. Wenn Sie das Protokollformat Ihrer Event-Funktion in JSON ändern, ändert sich dieses Standardverhalten. Weitere Informationen zur Protokollierung in Python finden Sie unter Python-Lambda-Ereignisfunktionen protokollieren und überwachen.
Bei Node.js Funktionen, die EMF-Logs (Embedded Metric Format) ausgeben, kann die Änderung des Protokollformats Ihrer Event-Funktion in JSON dazu führen, dass Ihre Metriken nicht erkannt CloudWatch werden können.
Wichtig
Wenn Ihre Event-Funktion Powertools for AWS Lambda (TypeScript) oder die Open-Source-EMF-Client-Bibliotheken zur Ausgabe von EMF-Protokollen verwendet, aktualisieren Sie Ihre Powertools
So konfigurieren Sie das Protokollformat einer Event-Funktion (Konsole)
Öffnen Sie die Seite Event Functions
der Lambda-Konsole. -
Wählen Sie eine Event-Funktion
-
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.
-
Wählen Sie unter Protokollinhalt für Protokollformat entweder Text oder JSON aus.
-
Wählen Sie Speichern.
Um das Protokollformat einer vorhandenen Funktion zu ändern (AWS CLI)
-
Verwenden Sie den Befehl update-function-configuration
, um das Protokollformat einer vorhandenen Funktion zu ändern. Legen Sie die LogFormat-Option inLoggingConfigentweder aufJSONoderTextfest.aws lambda update-function-configuration \ --function-name myFunction \ --logging-config LogFormat=JSON
Um das Protokollformat festzulegen, wenn Sie eine Funktion erstellen (AWS CLI)
-
Verwenden Sie die Option
--logging-configim Befehl create-function, um das Protokollformat zu konfigurieren, wenn Sie eine neue Funktion erstellen. Legen Sie LogFormataufJSONoderTextfest. Der folgende Beispielbefehl erstellt eine Node.js Funktion, die Logs in strukturiertem JSON ausgibt.Wenn Sie beim Erstellen einer Funktion kein Protokollformat angeben, verwendet Lambda das Standardprotokollformat für die von Ihnen ausgewählte Laufzeitversion. Informationen zu den Standard-Protokollierungsformaten finden Sie unter Standardprotokollformate.
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