Direkt zum Inhalt

Warum werden meine CloudWatch-Protokolle von Lambda@Edge nicht geliefert?

Lesedauer: 2 Minute
0

Ich habe eine AWS Lambda@Edge-Funktion mit einer Amazon CloudFront-Distribution verknüpft. Ich kann die Protokolle der Lambda@Edge-Funktion jedoch nicht im Amazon CloudWatch Logs-Protokollstream finden.

Lösung

Berechtigung für die IAM-Rolle, die der Lambda@Edge-Funktion zugeordnet ist, überprüfen

Wenn die AWS Identity and Access Management (IAM)-Rolle, die mit der Lambda@Edge-Funktion verknüpft ist, nicht über die erforderlichen Berechtigungen verfügt, werden Lambda@Edge-Protokolle nicht ausgefüllt. Stelle sicher, dass die Funktionsrolle über die erforderlichen Berechtigungen verfügt, um Protokollgruppen und Streams zu erstellen und Protokollereignisse in eine beliebige AWS-Region zu übertragen.

Beispiel für eine IAM-Richtlinie:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:PutLogEvents"
            ],
            "Resource": [
                "arn:aws:logs:*:*:*"
            ]
        }
    ]
}

Weitere Informationen zu den Berechtigungen, die zum Senden von Daten an CloudWatch Logs erforderlich sind, findest du unter Einrichten von IAM-Berechtigungen und -Rollen für Lambda@Edge.

Protokolle in der Region suchen, in der CloudFront die Lambda-Funktion aufruft

Bestätige die Region in der CloudFront-Konsole. Wenn du die falsche Region verwendet hast, werden die Protokolle möglicherweise nicht angezeigt.

Wenn du die Lambda@Edge-Funktion aufrufen, erstellt Lambda CloudWatch Logs-Protokollstreams in der Region, in der die Anforderung empfangen wurde. Der Name der Protokollgruppe verwendet das folgende Format: /aws/lambda/us-east-1.function-name.

Um die Lambda@Edge-Funktionsprotokolle zu finden, suche nach der Region, in der CloudFront die Funktion aufruft. Führe die folgenden Schritte aus:

  1. Öffne die CloudFront-Konsole.
  2. Wähle unter Telemetrie die Option Überwachung.
  3. Wähle die Registerkarte Lambda@Edge.
  4. Wähle die Lambda@Edge-Funktion und dann Metriken anzeigen.
  5. Wähle Funktionsprotokolle anzeigen und dann die Region aus, in der CloudFront die Funktion aufruft.
    Hinweis: Wenn du Fehler in einer Region siehst, wähle diese Region im Metrikdiagramm Fehler aus.
  6. Um den Edge-Standort zu überprüfen, an den CloudFront die Anfrage weitergeleitet hat, überprüfe den Header-Wert der Antwort x-amz-cf-pop. Überprüfe dann die entsprechende Region in CloudWatch Logs, um die Protokolldateien zu überprüfen. Wenn x-amz-cf-pop beispielsweise IAD89-P1 ist, dann ist IAD der Flughafencode und CloudFront hat die Anfrage in us-east-1 verarbeitet.

Wenn Lambda eine ungültige Antwort an CloudFront zurückgibt, protokolliert CloudFront die Fehlermeldungen in den Protokolldateien. Anschließend veröffentlicht CloudFront diese Protokolle in CloudWatch Logs in der Region, in der die Lambda-Funktion ausgeführt wurde. Protokollgruppen verwenden das folgende Format: /aws/cloudfront/lambdaedge/distributionId. Informationen zur Region, in der du die CloudWatch Logs-Protokolldatei findest, findest du unter Lambda @Edge-Region ermitteln.

Ähnliche Informationen

Berichte, Metriken und Protokolle

Feststellen, ob dein Konto Protokolle an CloudWatch überträgt

AWS OFFICIALAktualisiert vor 8 Monaten