Pourquoi ma fonction Lambda n'a-t-elle pas été déclenchée par ma règle EventBridge ?

Lecture de 5 minute(s)
0

Je souhaite comprendre pourquoi la règle Amazon EventBridge que j'ai créée à l'aide de l'interface de la ligne de commande AWS (AWS CLI) n'invoque pas ma fonction AWS Lambda.

Brève description

Suivez ces étapes pour identifier le problème :

  1. Vérifiez que la source de l'événement a bien publié un événement et déclenché la règle Amazon EventBridge associée.
  2. Vérifiez que la règle EventBridge a bien invoqué la cible configurée.
  3. En cas d'échec de l'invocation de la cible, vérifiez que la fonction AWS Lambda dispose des autorisations appropriées dans sa politique de ressources.

Résolution

Remarque : si des erreurs surviennent lors de l'exécution des commandes AWS CLI, vérifiez que vous utilisez la version la plus récente de l'interface.

Examen des métriques CloudWatch pour la règle EventBridge

  1. Ouvrez la console Amazon CloudWatch.
  2. Dans le volet de navigation de gauche, sous Métriques, sélectionnez Toutes les métrique.
  3. Sélectionnez l'espace de noms AWS/Events.
  4. Sélectionnez les métriques TriggerRules, Invocations et FailedInvocations (si disponibles) pour la règle en question. Si nécessaire, vous pouvez consulter ces métriques à l'aide de la statistique SUM.
    Remarque : les points de données TriggerRules indiquent qu'un événement a déclenché la règle EventBridge. Les points de données Invocations indiquent que la règle EventBridge a invoqué la cible correspondante. La présence de points de données FailedInvocations dans les métriques indique que la règle n'a peut-être pas réussi à invoquer la cible. Les FailedInvocations représentent un échec permanent et peuvent être dus à des autorisations incorrectes ou à une mauvaise configuration de la cible.

Vérification des autorisations de la politique de ressources de la fonction Lambda

Vous devez tenir compte des points suivants lorsque vous créez une règle EventBridge avec une fonction Lambda comme cible :

  • Lorsque vous utilisez la console Amazon EventBridge pour créer une règle, la console ajoute automatiquement les autorisations appropriées à la politique de ressources de la fonction.
  • Lorsque vous utilisez l'interface de la ligne de commande AWS, le SDK ou AWS CloudFormation pour créer une règle, vous devez ajouter manuellement les autorisations dans la politique de ressources.

Les autorisations accordent au service Amazon EventBridge l'accès nécessaire pour pouvoir invoquer la fonction Lambda.

Vérification des autorisations associées à la fonction Lambda cible

Procédez comme suit :

  1. Ouvrez la console AWS Lambda.
  2. Choisissez la fonction Lambda cible.
  3. Sélectionnez l'onglet Configuration, puis choisissez Autorisations.
  4. Dans la section Politique basée sur les ressources, consultez le document de politique.

Vous pouvez également utiliser l'API GetPolicy ou la commande get-policy de l'interface AWS CLI avec les entrées appropriées pour récupérer la politique de ressources de la fonction Lambda.

L'exemple suivant montre une politique de ressources qui permet à EventBridge d'invoquer la fonction Lambda :

{
  "Effect": "Allow",
  "Action": "lambda:InvokeFunction",
  "Resource": "arn:aws:lambda:region:account-id:function:function-name",
  "Principal": {
    "Service": "events.amazonaws.com"
  },
  "Condition": {
    "ArnLike": {
      "AWS:SourceArn": "arn:aws:events:region:account-id:rule/rule-name"
    }
  },
  "Sid": "InvokeLambdaFunction"
}

Remarque : vous devez remplacer l'ARN par la région, l'ID de compte et le nom de ressource appropriés.

**Mise à jour de la politique de ressources **

Si vous devez mettre à jour la politique de ressources, procédez comme suit :

  1. Ouvrez la console AWS Lambda.
  2. Choisissez la fonction Lambda cible.
  3. Sélectionnez l'onglet Configuration, puis sélectionnez Autorisations.
  4. Dans la section Politique basée sur les ressources, choisissez Ajouter des autorisations.
  5. Sélectionnez AWS Service - EventBridge (CloudWatch Events).
  6. Indiquez un ID de déclaration (Sid) comme identifiant facultatif pour votre déclaration de politique.
  7. Indiquez le Principal sous la forme events.amazonaws.com.
    Remarque : ce champ est généralement rempli automatiquement.
  8. Fournissez l'ARN source en tant qu'ARN de la règle EventBridge.
  9. Dans Action, sélectionnez Lambda:InvokeFunction dans la liste déroulante.
  10. Sélectionnez Enregistrer.

Vous pouvez également mettre à jour la politique à l'aide de l'API AddPermission ou de la commande AWS Lambda add-permission de l'interface de la ligne de commande AWS.

Par exemple :

aws lambda add-permission \--function-name MyFunction \
--statement-id MyId \
--action 'lambda:InvokeFunction' \
--principal events.amazonaws.com \
--source-arn arn:aws:events:us-east-1:123456789012:rule/MyRule

Ajout d'une file d'attente de lettres mortes (DLQ) Amazon SQS à la cible

EventBridge utilise des DLQ Amazon Simple Queue Service (Amazon SQS) pour stocker les événements qui ne peuvent pas être transmis à une cible. Vous devez associer une DLQ Amazon SQS à la cible signalant les FailedInvocations. Récupérez les événements de la DLQ à des fins d'analyse et pour mieux comprendre le contexte de leur échec. Après correction, ces événements peuvent être renvoyés à la cible pour traitement.

  1. Ouvrez la règle correspondante dans la console EventBridge.
  2. Sous Cibles, sélectionnez Modifier, puis développez la section Paramètres supplémentaires.
  3. Sous File d'attente de lettres mortes, choisissez Sélectionnez une file d'attente Amazon SQS du compte AWS actuel à utiliser comme file d'attente de lettres mortes.
  4. Sélectionnez une file d'attente SQS à utiliser comme DLQ.
  5. Une fois la DLQ attribuée, suivez les étapes restantes dans la section Modifier la règle pour enregistrer les modifications.

Informations connexes

Ma règle s'est exécutée mais ma fonction Lambda n'a pas été invoquée

Utilisation de politiques basées sur les ressources pour Amazon EventBridge : Autorisations AWS Lambda

Politique relative aux nouvelles tentatives d'événements et utilisation de files d'attente de lettres mortes

Meilleure reprise après échec pour Amazon EventBridge

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 7 mois