Perché i registri di Lambda@Edge CloudTrail non vengono consegnati?

4 minuti di lettura
0

Ho associato una funzione AWS Lambda@Edge a una distribuzione Amazon CloudFront come trigger. Non riesco a trovare i registri di esecuzione della funzione Lambda@Edge in Amazon CloudWatch compilati nel flusso di log di AWS CloudTrail. Come posso scoprire il motivo per cui mancano e risolvere il problema?

I registri di Lambda@Edge non vengono compilati se il ruolo AWS Identity and Access Management (IAM) associato alla funzione Lambda@Edge non dispone dell'autorizzazione necessaria. I registri possono apparire mancanti anche nel caso in cui li si cerchi nella Regione errata dalla console.

Risoluzione

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

Verifica che il ruolo di esecuzione della funzione disponga delle autorizzazioni necessarie per creare gruppi di flussi di log e flussi e inserire registri eventi in qualsiasi Regione AWS. La consegna del registro avrà esito negativo se il ruolo di esecuzione associato alla funzione Lambda non dispone delle autorizzazioni necessarie.

Un esempio di policy IAM associata al ruolo di esecuzione di Lambda@Edge:

{
  "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 ai registri di CloudWatch, consulta la pagina Impostazione di ruoli e autorizzazioni IAM per Lambda@Edge.

Controlla i registri nella Regione in cui è stata attivata la funzione Lambda

Quando la funzione Lambda@Edge è attivata, Lambda crea flussi di log CloudWatch nella Regione AWS più vicina alla posizione in cui è attivata la funzione. Il nome del gruppo di flussi di log è formattato come /aws/lambda/us-east-1.function-name, dove function-name è il nome della funzione Lambda.

Per individuare i registri della funzione Lambda@Edge, è necessario determinare in quale Regione viene richiamata la funzione e successivamente visualizzare i registri.

Per trovare la Regione in cui è stata richiamata la funzione:

  1. Accedi alla console di gestione AWS e apri la console di CloudFront.
  2. Scegli Monitoring (Monitoraggio) nella categoria Telemetry (Telemetria).
  3. Seleziona la scheda Lambda@Edge.
  4. Seleziona la funzione Lambda@Edge, quindi scegli View function metrics (Visualizza le metriche della funzione).

Dalla pagina di monitoraggio possiamo ora vedere in quali Regioni vengono richiamate le nostre funzioni di replica in un determinato periodo di tempo. Da qui possiamo trovare i registri di CloudWatch per la nostra funzione in ogni Regione. A tale scopo, seleziona View function logs (Visualizza i registri delle funzioni), quindi seleziona la Regione in cui viene richiamata la funzione.

Nota: se vedi errori in una particolare Regione, scegli la Regione che mostra gli errori nel grafico. Per ulteriori informazioni, consulta la pagina Determinazione della regione Lambda@Edge.

Oppure, per determinare la posizione edge a cui è stata indirizzata la richiesta, controlla il valore dell'intestazione della risposta x-amz-cf-pop. Quindi, controlla la Regione corrispondente in CloudWatch per vedere i file di registro. Ad esempio, se x-amz-cf-pop è impostato su IAD89-P1, ciò indica che la richiesta è stata servita nella Regione us-east-1 dove IAD è il codice dell'aeroporto.

Quando Lambda restituisce una risposta non valida a CloudFront, quest'ultimo invia i messaggi di errore scritti nei file di registro. CloudFront esegue quindi il push nella Regione di CloudWatch in cui è stata eseguita la funzione Lambda. I gruppi di flussi di log hanno il seguente formato: /aws/cloudfront/LambdaEdge/DistributionId, dove DistributionId è l'ID della distribuzione. Per trovare la Regione in cui si trova il file di registro di CloudWatch, consulta la pagina Determinazione della regione Lambda@Edge.


Informazioni correlate

Impostazione di ruoli e autorizzazioni IAM per Lambda@Edge

Metriche e registri di CloudWatch per le funzioni Lambda@Edge

Stabilire se il tuo account invia i registri a CloudWatch

AWS UFFICIALE
AWS UFFICIALEAggiornata 2 anni fa