Salta al contenuto

Perché i miei log CloudWatch di Lambda@Edge non vengono consegnati?

3 minuti di lettura
0

Ho associato una funzione AWS Lambda@Edge a una distribuzione Amazon CloudFront. Tuttavia, non riesco a trovare i log della funzione Lambda@Edge nel flusso di log di Amazon CloudWatch Logs.

Risoluzione

Verifica l'autorizzazione per il ruolo IAM associato alla funzione Lambda@Edge

Se il ruolo AWS Identity and Access Management (AWS IAM) associato alla funzione Lambda@Edge non ha le autorizzazioni richieste, i log di Lambda@Edge non vengono compilati. Verifica che il ruolo della funzione disponga delle autorizzazioni necessarie per creare gruppi e flussi di log e inserire eventi del log in qualsiasi Regione AWS.

Esempio di policy IAM:

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

Per ulteriori informazioni sulle autorizzazioni necessarie per inviare dati a CloudWatch Logs, consulta Configura le autorizzazioni e i ruoli IAM per Lambda@Edge.

Individua i log nella Regione in cui CloudFront invoca la funzione Lambda

Verifica la Regione nella console CloudFront. Se hai utilizzato la Regione non corretta, potresti non visualizzare i log.

Quando invochi la funzione Lambda@Edge, Lambda crea flussi di log di CloudWatch Logs nella Regione in cui è stata ricevuta la richiesta. Il nome del gruppo di log utilizza il seguente formato: /aws/lambda/us-east-1.function-name.

Per individuare i log della funzione Lambda@Edge, individua la Regione in cui CloudFront invoca la funzione. Completa i seguenti passaggi:

  1. Apri la console di CloudFront.
  2. In Telemetria, scegli Monitoraggio.
  3. Scegli la scheda Lambda@Edge.
  4. Seleziona la funzione Lambda@Edge, quindi View metrics (Visualizza metriche).
  5. Seleziona View function logs (Visualizza log funzione), quindi seleziona la Regione in cui CloudFront invoca la funzione.
    Nota: se vedi errori in una Regione, seleziona quella Regione nel grafico della metrica Errors.
  6. Per verificare la posizione edge in cui CloudFront ha indirizzato la richiesta, controlla il valore dell'intestazione della risposta x-amz-cf-pop. Quindi controlla la Regione corrispondente in CloudWatch Logs per esaminare i file di log. Ad esempio, se x-amz-cf-pop è IAD89-P1, IAD è il codice dell'aeroporto e CloudFront ha indirizzato la richiesta a us-east-1.

Se Lambda restituisce una risposta non valida a CloudFront, CloudFront registra i messaggi di errore nei file di log, dopodiché pubblica i log su CloudWatch Logs nella Regione in cui è stata eseguita la funzione Lambda. I gruppi di log utilizzano il seguente formato: /aws/cloudfront/LambdaEdge/DistributionId. Per individuare la Regione in cui puoi trovare il file di log di CloudWatch Logs, consulta Determina la Regione Lambda@Edge.

Informazioni correlate

Report, metriche e log

Determina se il tuo account invia i log a CloudWatch

AWS UFFICIALEAggiornata un anno fa