Warum werden Lambda @Edge CloudTrail-Protokolle nicht übermittelt?

Lesedauer: 3 Minute
0

Ich habe eine AWS Lambda@Edge-Funktion mit einer Amazon CloudFront-Verteilung als Auslöser verknüpft. Ich kann die Ausführungsprotokolle der Lambda@Edge-Funktion nicht in Amazon CloudWatch finden, die im AWS CloudTrail-Protokollstream eingetragen sind. Wie kann ich beheben, warum sie fehlen?

Lambda@Edge-Protokolle können nicht ausgefüllt werden, wenn der mit der Lambda@Edge-Funktion verknüpften Rolle AWS Identity and Access Management (IAM) die erforderliche Berechtigung fehlt. Protokolle können auch fehlen, wenn Sie die falsche Region in der Konsole überprüfen.

Auflösung

Überprüfen Sie die Berechtigung für die IAM-Rolle, die mit der Lambda@Edge-Funktion verknüpft ist

Stellen Sie sicher, dass die Funktionsausführungsrolle über die erforderlichen Berechtigungen zum Erstellen von Protokollgruppenund -streams und zum Einfügen von Protokollereignissenin eine beliebige AWS-Region verfügt. Die Protokollzustellung schlägt fehl, wenn die der Lambda-Funktion zugeordnete Ausführungsrolle nicht über die erforderlichen Berechtigungen verfügt.

Ein Beispiel für eine IAM-Richtlinie, die der Lambda@Edge-Ausführungsrolle angehängt ist:

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

Weitere Informationen zu den erforderlichen Berechtigungen zum Senden von Daten an CloudWatch-Protokolle finden Sie unter Festlegen von IAM-Berechtigungen und -Rollen für Lambda@Edge.

Überprüfen Sie die Protokolle in der Region, in der die Lambda-Funktion aktiviert wurde

Wenn die Lambda@Edge-Funktion aktiviert ist, erstellt Lambda CloudWatch-Protokollstreams in der AWS-Region, die dem Ort, an dem die Funktion aktiviert ist, am nächsten liegt. Der Name der Protokollgruppe ist formatiert als /aws/lambda/us-east-1.function-name, wobei Funktionsname der Name der Lambda-Funktion ist.

Um die Lambda@Edge-Funktionsprotokolle zu finden, müssen Sie bestimmen, welche Region(en) die Funktion aufgerufen wird, und dann die Protokolle anzeigen.

So finden Sie die Region, in der die Funktion aufgerufen wurde:

  1. Melden Sie sich in der AWS-Managementkonsole an und starten Sie Amazon S3-Konsole.
  2. Wählen Sie in der Kategorie Telemetrie die Option Überwachung.
  3. Wählen Sie die Registerkarte Lambda@Edge.
  4. Wählen Sie die Funktion Lambda@Edge und anschließend „Funktionsmetriken anzeigen“.

Auf der Überwachungsseite können wir nun sehen, in welchen Regionen unsere Replikatfunktionen in einem bestimmten Zeitraum aufgerufen werden. Von hier aus finden wir die CloudWatch-Protokolle für unsere Funktion in jeder Region. Wählen Sie dazu Funktionsprotokolle anzeigen und dann die Region aus, in der die Funktion aufgerufen wird.

Hinweis: Wenn in einer bestimmten Region Fehler angezeigt werden, wählen Sie die Region, in der Fehler im Diagramm angezeigt werden. Weitere Informationen finden Sie unter Bestimmung der Lambda@Edge-Region.

Oder überprüfen Sie den Header-Wert der x-amz-cf-pop-Antwort, um den Edge-Standort zu ermitteln, an den die Anforderung weitergeleitet wurde. Überprüfen Sie dann die entsprechende Region in CloudWatch, um die Protokolldateien anzuzeigen. Wenn x-amz-cf-pop beispielsweise auf IAD89-P1 gesetzt ist, zeigt dies an, dass die Anforderung in der Region us-east-1 bedient wurde, wobei IAD der Flughafencode ist.

Wenn Lambda eine nicht ungültige Antwort an CloudFront zurückgibt, überträgt CloudFront die in die Protokolldateien geschriebenen Fehlermeldungen. CloudFront wechselt dann zur CloudWatch-Region, in der die Lambda-Funktion ausgeführt wurde. Protokollgruppen haben das folgende Format: /aws/cloudfront/LambdaEdge/DistributionId, wobei DistributionId die ID der Distribution ist. Informationen zur Region, in der sich die CloudWatch-Protokolldatei befindet, finden Sie unter Bestimmen der Lambda@Edge-Region.


Relevante Informationen

IAM-Berechtigungen und -Rollen für Lambda@Edge festlegen

CloudWatch-Metriken und -Protokolle für Lambda@Edge-Funktionen

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

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren