Configurazione dei gruppi di log CloudWatch - AWS Lambda

Configurazione dei gruppi di log CloudWatch

Per impostazione predefinita, CloudWatch crea automaticamente un gruppo di log denominato /aws/lambda/<function name> per la funzione quando questa viene chiamata per la prima volta. Per configurare la tua funzione per l'invio dei log a un gruppo di log esistente o per creare un nuovo gruppo di log per la funzione, puoi utilizzare la console Lambda o la AWS CLI. Puoi anche configurare gruppi di log personalizzati utilizzando i comandi dell'API Lambda CreateFunction e UpdateFunctionConfiguration e la risorsa AWS::Serverless::Function di AWS Serverless Application Model (AWS SAM).

Puoi configurare più funzioni Lambda affinché inviino log al medesimo gruppo di log CloudWatch. Ad esempio, è possibile utilizzare un singolo gruppo di log per archiviare i log per tutte le funzioni Lambda che costituiscono una particolare applicazione. Quando si utilizza un gruppo di log personalizzato per una funzione Lambda, i flussi di log creati da Lambda includono il nome e la versione della funzione. Ciò garantisce che la mappatura tra i messaggi di log e le funzioni venga preservata, anche se si utilizza lo stesso gruppo di log per più funzioni.

Il formato di denominazione per i flussi di log per i gruppi di log personalizzati segue questa convenzione:

YYYY/MM/DD/<function_name>[<function_version>][<execution_environment_GUID>]

Tieni presente che quando configuri un gruppo di log personalizzato, il nome selezionato per il gruppo di log deve seguire le regole di denominazione di File di log CloudWatch. Inoltre, i nomi dei gruppi di log personalizzati non devono cominciare con la stringa aws/. Se crei un gruppo di log personalizzato che comincia con aws/, Lambda non sarà in grado di crearlo. Di conseguenza, i log della funzione non verranno inviati a CloudWatch.

Modifica del gruppo di log di una funzione (console)
  1. Aprire la pagina Funzioni della console Lambda.

  2. Scegliere una funzione.

  3. Nella pagina di configurazione della funzione, scegli Strumenti di monitoraggio e gestione.

  4. Nel riquadro Configurazione della registrazione, scegli Modifica.

  5. Nel riquadro Gruppo di registrazione, per Gruppo di log CloudWatch, scegli Personalizzato.

  6. In Gruppo di log personalizzato, immetti il nome del gruppo di log CloudWatch al quale desideri che la funzione invii i log. Se immetti il nome di un gruppo di log esistente, la funzione utilizzerà quel gruppo. Se non esiste alcun gruppo di log con il nome immesso, Lambda creerà un nuovo gruppo di log per la funzione con tale nome.

Modifica del gruppo di log di una funzione (AWS CLI)
  • Per modificare il gruppo di log di una funzione esistente, utilizza il comando update-function-configuration.

    aws lambda update-function-configuration \ --function-name myFunction \ --logging-config LogGroup=myLogGroup
Definizione di un gruppo di log personalizzato durante la creazione di una funzione (AWS CLI)
  • Per specificare un gruppo di log personalizzato quando crei una nuova funzione Lambda tramite la AWS CLI, utilizza l'opzione --logging-config. Il comando di esempio seguente crea una funzione Lambda Node.js che invia i log a un gruppo di log denominato myLogGroup.

    aws lambda create-function \ --function-name myFunction \ --runtime nodejs22.x \ --handler index.handler \ --zip-file fileb://function.zip \ --role arn:aws:iam::123456789012:role/LambdaRole \ --logging-config LogGroup=myLogGroup

Autorizzazioni del ruolo di esecuzione

Per poter inviare i log a CloudWatch Logs, la funzione deve disporre dell'autorizzazione logs:PutLogEvents. Quando configuri il gruppo di log della funzione utilizzando la console Lambda, Lambda aggiunge questa autorizzazione al ruolo in base alla seguente condizione:

  • La destinazione del servizio è impostata su CloudWatch Logs

  • Il ruolo di esecuzione della funzione non dispone della autorizzazione per caricare i log in CloudWatch Logs (la destinazione predefinita)

Nota

Lambda non aggiunge alcuna autorizzazione Put per le destinazioni di log di Amazon S3 o Firehose.

Quando Lambda aggiunge questa autorizzazione, concede alla funzione l'autorizzazione a inviare i log a qualsiasi gruppo di log di File di log CloudWatch.

Per evitare che Lambda aggiorni automaticamente il ruolo di esecuzione della funzione e modificarlo invece manualmente, espandi Autorizzazioni e deseleziona Aggiungi autorizzazioni richieste.

Quando configuri il gruppo di log della funzione utilizzando la AWS CLI, Lambda non aggiunge automaticamente l'autorizzazione logs:PutLogEvents. Aggiungi l'autorizzazione al ruolo di esecuzione della tua funzione, se non ne dispone già. Questa autorizzazione è inclusa nella policy gestita AWSLambdaBasicExecutionRole.