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 von CloudWatch Protokollgruppen
Standardmäßig wird CloudWatch automatisch eine Protokollgruppe erstellt, die /aws/lambda/<function name> nach Ihrer Lambda-Ereignisfunktion benannt ist, wenn sie zum ersten Mal aufgerufen wird. Um Ihre Event Function so zu konfigurieren, dass Logs an eine bestehende Log-Gruppe gesendet werden, oder um eine neue Loggruppe für Ihre Event Function zu erstellen, können Sie die Lambda-Konsole oder die AWS CLI verwenden. Sie können benutzerdefinierte Protokollgruppen auch mithilfe der Befehle CreateFunctionund UpdateFunctionConfigurationLambda API und der Ressource AWS Serverless Application Model (AWS SAM) AWS: :Serverless: :Function konfigurieren.
Sie können mehrere Lambda-Ereignisfunktionen konfigurieren, um Protokolle an dieselbe CloudWatch Protokollgruppe zu senden. Sie könnten beispielsweise eine einzelne Protokollgruppe verwenden, um Protokolle für alle Lambda-Ereignisfunktionen zu speichern, aus denen eine bestimmte Anwendung besteht. Wenn Sie eine benutzerdefinierte Protokollgruppe für eine Lambda-Ereignisfunktion verwenden, enthalten die von Lambda erstellten Protokollstreams den Namen der Ereignisfunktion und die Version der Ereignisfunktion. Dadurch wird sichergestellt, dass die Zuordnung zwischen Protokollnachrichten und Ereignisfunktionen beibehalten wird, auch wenn Sie dieselbe Protokollgruppe für mehrere Ereignisfunktionen verwenden.
Das Protokollstream-Benennungsformat für benutzerdefinierte Protokollgruppen folgt dieser Benennungskonvention:
YYYY/MM/DD/<function_name>[<function_version>][<execution_environment_GUID>]Beachten Sie, dass bei der Konfiguration einer benutzerdefinierten Protokollgruppe der Name, den Sie für Ihre Protokollgruppe auswählen, den Benennungsregeln für CloudWatch Protokolle entsprechen muss. Darüber hinaus dürfen benutzerdefinierte Protokollgruppennamen nicht mit der Zeichenfolge aws/ beginnen. Wenn Sie eine benutzerdefinierte Protokollgruppe erstellen, die mit aws/ beginnt, kann Lambda die Protokollgruppe nicht erstellen. Aus diesem Grund werden die Protokolle Ihrer Event-Funktion nicht an gesendet CloudWatch.
So ändern Sie die Protokollgruppe einer Funktion (Konsole)
-
Ö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.
-
Wählen Sie im Bereich Protokollgruppe für CloudWatch Protokollgruppe die Option Benutzerdefiniert aus.
-
Geben Sie unter Benutzerdefinierte Protokollgruppe den Namen der CloudWatch Protokollgruppe ein, an die Ihre Funktion Protokolle senden soll. Wenn Sie den Namen einer vorhandenen Protokollgruppe eingeben, verwendet Ihre Funktion diese Gruppe. Wenn keine Protokollgruppe mit dem von Ihnen eingegebenen Namen existiert, erstellt Lambda eine neue Protokollgruppe für Ihre Funktion mit diesem Namen.
Um die Protokollgruppe einer Ereignisfunktion zu ändern (AWS CLI)
-
Um die Protokollgruppe einer vorhandenen Ereignisfunktion zu ändern, verwenden Sie den Befehl update-function-configuration
. aws lambda update-function-configuration \ --function-name myFunction \ --logging-config LogGroup=myLogGroup
Um eine benutzerdefinierte Protokollgruppe anzugeben, wenn Sie eine Ereignisfunktion erstellen (AWS CLI)
-
Um eine benutzerdefinierte Protokollgruppe anzugeben, wenn Sie eine neue Lambda-Ereignisfunktion mit dem erstellen AWS CLI, verwenden Sie die
--logging-configOption. Der folgende Beispielbefehl erstellt eine Node.js Lambda-Ereignisfunktion, die Protokolle an eine Protokollgruppe mit dem NamenmyLogGroupsendet.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 LogGroup=myLogGroup
Berechtigungen für die Ausführungsrolle
Damit Ihre Event-Funktion Logs an CloudWatch Logs senden kann, muss sie über die PutLogEventsLogs-Berechtigung verfügen. Wenn Sie die Protokollgruppe Ihrer Event-Funktion mithilfe der Lambda-Konsole konfigurieren, fügt Lambda der Rolle diese Berechtigung unter den folgenden Bedingungen hinzu:
-
Das Serviceziel ist auf Logs festgelegt CloudWatch
-
Die Ausführungsrolle Ihrer Event-Funktion ist nicht berechtigt, Logs in Logs (das Standardziel) hochzuladen CloudWatch
Anmerkung
Lambda fügt keine Put-Berechtigungen für Amazon S3- oder Firehose-Protokollziele hinzu.
Wenn Lambda diese Berechtigung hinzufügt, erteilt es der Event Function die Berechtigung, Protokolle an jede CloudWatch Logs-Protokollgruppe zu senden.
Um zu verhindern, dass Lambda die Ausführungsrolle der Event-Funktion automatisch aktualisiert und sie stattdessen manuell bearbeitet, erweitern Sie Permissions und deaktivieren Sie Add required permissions.
Wenn Sie die Protokollgruppe Ihrer Event-Funktion mithilfe von konfigurieren AWS CLI, fügt Lambda die logs:PutLogEvents Berechtigung nicht automatisch hinzu. Fügen Sie die Berechtigung zur Ausführungsrolle Ihrer Event-Funktion hinzu, falls sie noch nicht vorhanden ist. Diese Berechtigung ist in der AWSLambdaBasicExecutionRole
CloudWatch Protokollierung für Lambda Managed Instances
Bei der Verwendung von Lambda Managed Instances gibt es zusätzliche Überlegungen zum Senden von Protokollen an CloudWatch Logs:
VPC-Netzwerkanforderungen
Lambda Managed Instances werden auf kundeneigenen EC2-Instances innerhalb Ihrer VPC ausgeführt. Um Logs an CloudWatch Logs und Traces zu senden X-Ray, müssen Sie sicherstellen, dass diese AWS APIs von Ihrer VPC aus routingfähig sind. Sie haben mehrere Möglichkeiten:
-
AWS PrivateLink (empfohlen): Wird verwendet AWS PrivateLink, um VPC-Endpunkte für CloudWatch Protokolle und X-Ray Dienste zu erstellen. Dadurch können Ihre Instances privat auf diese Dienste zugreifen, ohne dass ein Internet-Gateway oder NAT-Gateway erforderlich ist. Weitere Informationen finden Sie unter Verwenden von CloudWatch Protokollen mit VPC-Endpunkten der Schnittstelle.
-
NAT-Gateway: Konfigurieren Sie ein NAT-Gateway, um ausgehenden Internetzugang von Ihren privaten Subnetzen aus zu ermöglichen.
-
Internet Gateway: Stellen Sie für öffentliche Subnetze sicher, dass für Ihre VPC ein Internet-Gateway konfiguriert ist.
Wenn CloudWatch Logs oder X-Ray APIs nicht von Ihrer VPC aus routingfähig sind, werden Ihre Event Function-Logs und -Traces nicht zugestellt.
Gleichzeitige Aufrufe und Protokollzuweisung
Ausführungsumgebungen für Lambda Managed Instances können mehrere Aufrufe gleichzeitig verarbeiten. Wenn mehrere Aufrufe gleichzeitig ausgeführt werden, werden ihre Protokolleinträge im selben Protokollstream verschachtelt. Um Protokolle von gleichzeitigen Aufrufen effektiv zu filtern und zu analysieren, sollten Sie sicherstellen, dass jeder Protokolleintrag die Anforderungs-ID enthält. AWS
Wir empfehlen einen der folgenden Ansätze:
-
Verwenden Sie standardmäßige Lambda-Laufzeitlogger (empfohlen): Die von Lambda Managed Runtimes bereitgestellten Standard-Logging-Bibliotheken enthalten automatisch die Anforderungs-ID in jedem Protokolleintrag.
-
Implementieren Sie strukturierte JSON-Protokollierung: Wenn Sie eine benutzerdefinierte Laufzeit erstellen oder eine benutzerdefinierte Protokollierung benötigen, implementieren Sie JSON-formatted Protokolle, die die Anforderungs-ID in jedem Eintrag enthalten. Lambda Managed Instances unterstützen nur das JSON-Protokollformat. Nehmen Sie das
requestIdFeld in Ihre JSON-Logs auf, um die Filterung nach Aufrufen zu ermöglichen:{ "timestamp": "2025-01-15T10:30:00.000Z", "level": "INFO", "requestId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "message": "Processing request" }
Mit der Zuordnung der Anfrage-ID können Sie CloudWatch Log-Log-Log-Einträge für einen bestimmten Aufruf mithilfe von CloudWatch Logs Insights-Abfragen filtern. Beispiel:
fields @timestamp, @message | filter requestId = "a1b2c3d4-e5f6-7890-abcd-ef1234567890" | sort @timestamp asc
Weitere Informationen zu den Protokollierungsanforderungen für Lambda Managed Instances finden Sie unterGrundlegendes zur Lambda Managed Instance-Ausführungsumgebung.