Comment puis-je configurer un filtre d'abonnement CloudWatch pour invoquer ma fonction Lambda ?

Lecture de 3 minute(s)
0

Je souhaite configurer un filtre d'abonnement Amazon CloudWatch pour appeler ma fonction AWS Lambda.

Brève description

Avec Amazon CloudWatch Logs, vous pouvez utiliser un filtre d'abonnement qui envoie des données de journal à votre fonction Lambda. Les filtres d'abonnement CloudWatch Logs sont codés en base64 et compressés au format GZIP.

Avant de créer votre fonction Lambda, calculez le volume de données de journal qui seront générées. Assurez-vous de créer une fonction capable de gérer le volume. Si le volume de la fonction est insuffisant, le flux de journaux est limité. Pour plus d'informations, veuillez consulter la rubrique Quotas Lambda.

Remarque : la diffusion de grandes quantités de données CloudWatch Logs peut entraîner des frais d'utilisation élevés. Il est recommandé d'utiliser AWS Budgets pour suivre les dépenses et l'utilisation. Pour plus d'informations, veuillez consulter la rubrique Comment puis-je utiliser AWS Budgets pour suivre mes dépenses et mon utilisation ?

Résolution

Créez un filtre d'abonnement CloudWatch Logs qui envoie les données des journaux à votre fonction AWS Lambda.

Remarque : en cas d'erreurs lors de l'exécution de commandes depuis l'interface de la ligne de commande AWS (AWS CLI), vérifiez que vous utilisez la version la plus récente d'AWS CLI.

1.    Pour autoriser CloudWatch Logs à invoquer votre fonction Lambda, exécutez la commande add-permission de l'AWS CLI de la manière suivante :

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"

Important : remplacez « helloworld » par le nom de votre fonction Lambda, « YourLogGroup » par votre groupe de journaux et l'exemple de numéro de compte par celui de votre compte.

2.    Créez un filtre d'abonnement à l'aide de la commande de l'AWS CLI put-subscription-filter pour envoyer les événements du journal contenant un mot clé. Dans l'exemple suivant, le mot clé « ERROR » est utilisé pour la fonction Lambda :

Important : remplacez « YourLogGroup » par votre groupe de journaux et l'exemple de numéro de compte par celui de votre compte.

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

Le groupe de journaux CloudWatch « YourLogGroup » invoque la fonction Lambda lorsqu'il reçoit un événement du journal contenant le mot clé « ERROR » similaire au suivant :

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

Informations connexes

Syntaxe de filtre et de modèle

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an