Come posso configurare un filtro di sottoscrizione CloudWatch per richiamare la mia funzione Lambda?

3 minuti di lettura
0

Desidero configurare un filtro di sottoscrizione Amazon CloudWatch per richiamare la mia funzione AWS Lambda.

Breve descrizione

Con File di log Amazon CloudWatch puoi utilizzare un filtro di sottoscrizione che invia i dati di log alla tua funzione Lambda. I filtri di sottoscrizione di CloudWatch Logs sono codificati in base64 e compressi con il formato GZIP.

Prima di creare la funzione Lambda, calcola il volume di dati di log che verranno generati. Assicurati di creare una funzione in grado di gestire il volume calcolato. Se la funzione non prevede un volume sufficiente, il flusso di log viene limitato. Per ulteriori informazioni, consulta la pagina Lambda quotas (Quote di Lambda).

Nota: lo streaming di grandi quantità di dati di CloudWatch Logs potrebbe comportare costi di utilizzo elevati. Consigliamo di servirsi di Budget AWS per tenere traccia della spesa e dell'utilizzo. Per istruzioni, consulta la pagina Come posso utilizzare Budget AWS per tenere traccia delle mie spese e del mio utilizzo?

Risoluzione

Crea un filtro di sottoscrizione CloudWatch Logs che invia i dati di log alla tua funzione AWS Lambda.

Nota: se ricevi messaggi di errore durante l'esecuzione dei comandi dell'interfaccia della linea di comando AWS (AWS CLI), assicurati di utilizzare la versione più recente di AWS CLI.

1.    Per fornire a CloudWatch Logs l'autorizzazione a richiamare la tua funzione Lambda, esegui il comando dell'AWS CLI add-permission simile al seguente:

aws lambda add-permission \
    --function-name "helloworld" \
    --statement-id "helloworld" \
    --principal "logs.amazonaws.com" \
    --action "lambda:InvokeFunction" \
    --source-arn "arn:aws:logs:region:123456789123:log-group:YourLogGroup:*" \
    --source-account "123456789012"

Importante: sostituisci "helloworld" con il nome della tua funzione Lambda, "YourLogGroup" con il tuo gruppo di log e il numero di account di esempio con il tuo account.

2.    Crea un filtro di sottoscrizione utilizzando il comando dell'AWS CLI put-subscription-filter per inviare eventi di log che contengono una parola chiave. Nell'esempio seguente, la parola chiave "ERROR" viene utilizzata per la funzione Lambda:

Importante: sostituisci "YourLogGroup" con il tuo gruppo di log e il numero di account di esempio con il tuo account.

aws logs put-subscription-filter \
    --log-group-name YourLogGroup \
    --filter-name demo \
    --filter-pattern "ERROR" \
    --destination-arn arn:aws:lambda:region:123456789123:function:helloworld

Il gruppo di log di CloudWatch "YourLogGroup" richiama la funzione Lambda quando riceve un evento di log che contiene la parola chiave "ERROR" simile alla seguente:

{
  "awslogs": {
    "data": "H4sIAAAAAAAAAHWPwQqCQBCGX0Xm7EFtK+smZBEUgXoLCdMhFtKV3akI8d0bLYmibvPPN3wz00CJxmQnTO41whwWQRIctmEcB6sQbFC3CjW3XW8kxpOpP+OC22d1Wml1qZkQGtoMsScxaczKN3plG8zlaHIta5KqWsozoTYw3/djzwhpLwivWFGHGpAFe7DL68JlBUk+l7KSN7tCOEJ4M3/qOI49vMHj+zCKdlFqLaU2ZHV2a4Ct/an0/ivdX8oYc1UVX860fQDQiMdxRQEAAA=="
  }
}

Informazioni correlate

Filter and pattern syntax (Sintassi dei filtri e dei pattern)

AWS UFFICIALE
AWS UFFICIALEAggiornata un anno fa