Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Résolution des problèmes Amazon EventBridge
Vous pouvez utiliser les rubriques de cette section pour résoudre les problèmes liés à Amazon EventBridge .
Astuce
Pour vérifier que vos modèles d'événements correspondent aux événements attendus, vous pouvez utiliser le EventBridge Sandbox pour tester les modèles d'événements par rapport à des exemples d'événements. Pour plus d’informations, consultez Tester les modèles d'événements à l'aide du EventBridge Sandbox.
Rubriques
Ma règle s’est exécutée, mais ma fonction Lambda n’a pas été invoquée
Je viens de créer ou de modifier une règle, mais elle ne correspond pas à un événement de test
Ma règle ne s’est pas exécutée à l’heure que j’avais spécifiée dans ScheduleExpression
Mes règles correspondent AWS appels à l'API de service global mais cela n'a pas été exécuté
Le rôle IAM associé à ma règle est ignoré lors de l’exécution de la règle
Ma règle s’est exécutée plusieurs fois en réponse à un événement
Mes événements ne sont pas livrés à la file d'attente Amazon SQS cible
Ma règle s’exécute, mais je ne vois aucun message publié dans ma rubrique Amazon SNS
Avec quelles clés de condition IAM puis-je utiliser ? EventBridge
Comment savoir si les EventBridge règles ne sont pas respectées ?
Ma règle s’est exécutée, mais ma fonction Lambda n’a pas été invoquée
L’une des raisons pour lesquelles votre fonction Lambda peut ne pas s’exécuter est que vous ne disposez pas des autorisations appropriées.
Pour vérifier vos autorisations pour votre fonction Lambda
-
À l'aide de AWS CLI, exécutez la commande suivante avec votre fonction et votre AWS région :
aws lambda get-policy --function-nameMyFunction--regionus-east-1Le résultat suivant doit s'afficher.
-
Si le message d’erreur suivant s’affiche.
A client error (ResourceNotFoundException) occurred when calling the GetPolicy operation: The resource you requested does not exist.Ou, si vous voyez le résultat, mais ne pouvez pas localiser events.amazonaws.com en tant qu'entité de confiance dans la stratégie, exécutez la commande suivante :
aws lambda add-permission \ --function-nameMyFunction\ --statement-idMyId\ --action 'lambda:InvokeFunction' \ --principal events.amazonaws.com \ --source-arn arn:aws:events:us-east-1:123456789012:rule/MyRule -
Si la sortie contient un champ
SourceAccount, vous devez le supprimer. UnSourceAccountparamètre EventBridge empêche de pouvoir invoquer la fonction.
Note
Si la règle est incorrecte, vous pouvez modifier la règle dans la EventBridge console en la supprimant puis en la rajoutant à la règle. La EventBridge console définit ensuite les autorisations appropriées pour la cible.
Si vous utilisez une version ou un alias Lambda spécifique, ajoutez le paramètre --qualifier dans les commandes aws lambda get-policy et aws lambda add-permission, comme illustré dans la commande suivante.
aws lambda add-permission \ --function-nameMyFunction\ --statement-idMyId\ --action 'lambda:InvokeFunction' \ --principal events.amazonaws.com \ --source-arn arn:aws:events:us-east-1:123456789012:rule/MyRule--qualifieralias or version
Je viens de créer ou de modifier une règle, mais elle ne correspond pas à un événement de test
Lorsque vous modifiez une règle ou ses cibles, les événements entrants peuvent ne pas commencer ou arrêter immédiatement de chercher des correspondances aux nouvelles règles ou aux règles mises à jour. Les modifications ne prennent pas effet instantanément.
Si les événements ne correspondent toujours pas après une courte période, vérifiez les CloudWatch statistiques TriggeredRules et FailedInvocations votre règle. Invocations Pour plus d'informations sur ces statistiques, consultez la section Surveillance d'Amazon EventBridge.
Si la règle est destinée à correspondre à un événement d'un AWS service, effectuez l'une des opérations suivantes :
Utilisez l’action
TestEventPatternpour vérifier si le modèle d’événement de votre règle correspond à un événement de test. Pour plus d'informations, consultez TestEventPattern le manuel Amazon EventBridge API Reference.Utilisez le bac à sable de la EventBridge console.
Ma règle ne s’est pas exécutée à l’heure que j’avais spécifiée dans ScheduleExpression
Assurez-vous que vous avez défini le planning pour la règle dans le fuseau horaire UTC+0. Si le paramètre ScheduleExpression est correct, suivez les étapes indiquées dans Je viens de créer ou de modifier une règle, mais elle ne correspond pas à un événement de test.
Ma règle ne s’est pas exécutée à l’heure prévue
EventBridge exécute les règles dans la minute qui suit l'heure de début que vous avez définie. Le compte à rebours pour l'exécution commence dès que la règle est créée.
Note
Les règles planifiées ont le type de livraison guaranteed, ce qui signifie que les événements seront déclenchés au moins une fois à chaque heure prévue.
Vous pouvez utiliser une expression cron pour invoquer des cibles à une heure précise. Pour créer une règle qui s’exécute toutes les quatre heures à la 0ème minute, effectuez l’une des opérations suivantes :
-
Dans la EventBridge console, vous utilisez l'expression
0 0/4 * * ? *cron. -
En utilisant le AWS CLI, vous utilisez l'expression
cron(0 0/4 * * ? *).
Par exemple, pour créer une règle nommée TestRule qui s'exécute toutes les 4 heures à l'aide de AWS CLI, vous devez utiliser la commande suivante.
aws events put-rule --nameTestRule--schedule-expression 'cron(0 0/4 * * ? *)'
Pour exécuter une règle toutes les cinq minutes, utilisez l’expression cron suivante.
aws events put-rule --nameTestRule--schedule-expression 'cron(0/5 * * * ? *)'
La résolution la plus précise pour une EventBridge règle qui utilise une expression cron est d'une minute. Votre règle planifiée s’exécute au cours de cette minute, mais pas précisément à la seconde exacte.
Étant donné que EventBridge les services cibles sont distribués, il peut y avoir un délai de plusieurs secondes entre le moment où la règle planifiée s'exécute et le moment où le service cible exécute l'action sur la ressource cible.
Mes règles correspondent AWS appels à l'API de service global mais cela n'a pas été exécuté
AWS les services mondiaux ; tels que IAM et Amazon Route 53 ne sont disponibles que dans la région de l'Est des États-Unis (Virginie du Nord), de sorte que les événements provenant d'appels d' AWS API provenant de services mondiaux ne sont disponibles que dans cette région. Pour plus d’informations, consultez Événements de AWS services.
Le rôle IAM associé à ma règle est ignoré lors de l’exécution de la règle
EventBridge prend en charge les rôles d'exécution IAM pour tous les types de cibles. Si le rôle IAM de votre règle semble être ignoré, vérifiez que la politique de confiance du rôle events.amazonaws.com permet de l'assumer et que la politique d'autorisation accorde l'action requise pour la cible (par exemple, lambda:InvokeFunctionsns:Publish, ousqs:SendMessage).
Pour les cibles Lambda, Amazon SNS et Amazon SQS, si aucun rôle d'exécution IAM n'est configuré sur la cible, les autorisations basées sur les ressources EventBridge sont rétablies sur la ressource cible.
Assurez-vous que vos AWS STS points de terminaison régionaux sont activés afin qu' EventBridge ils puissent les utiliser lorsqu'ils assument le rôle IAM que vous avez fourni. Pour plus d'informations, consultez la section Activation et désactivation AWS STS dans une AWS région du Guide de l'utilisateur IAM.
Ma règle a un modèle d’événement censé correspondre à une ressource, mais aucun événement ne correspond
La plupart des services AWS considèrent les deux-points (:) ou les barres obliques (/) comme le même caractère dans Amazon Resource Names (ARNs)., mais EventBridge utilisent une correspondance exacte dans les modèles d'événements et les règles. Veillez à utiliser les caractères ARN corrects lors de la création de modèles d’événements, afin qu’ils correspondent à la syntaxe ARN dans l’événement à mettre en correspondance.
Certains événements, tels que les événements d'appel d' AWS API provenant de CloudTrail, ne contiennent rien dans le champ des ressources.
La livraison de mon événement à la cible a été retardée
EventBridge essaie de transmettre un événement à une cible pendant 24 heures au maximum, sauf dans les scénarios où votre ressource cible est limitée. La première tentative a lieu dès que l'événement arrive dans le flux d'événements. Si le service cible rencontre des problèmes, EventBridge reprogramme automatiquement une autre livraison. Si 24 heures se sont écoulées depuis l'arrivée de l'événement, EventBridge arrête d'essayer de diffuser l'événement et publie la FailedInvocations métrique dans CloudWatch. Nous vous recommandons de configurer une DLQ pour stocker les événements qui n’ont pas pu être livrés avec succès à une cible. Pour plus d’informations, consultez Utilisation de files d'attente aux lettres mortes pour traiter les événements non livrés dans EventBridge
Certains événements ne sont pas livrés à ma cible
Si la cible d'une EventBridge règle est limitée pendant une période prolongée, il est EventBridge possible que vous ne réessayiez pas la livraison. Par exemple, si la cible n'est pas configurée pour gérer le trafic d'événements entrants et que le service cible limite les demandes effectuées en votre nom, il est EventBridge possible que EventBridge vous ne tentiez pas de nouveau la livraison.
Ma règle s’est exécutée plusieurs fois en réponse à un événement
Dans de rares cas, la même règle peut s’exécuter plusieurs fois pour un seul événement ou une seule période planifiée, ou la même cible peut être invoquée plusieurs fois pour une règle déclenchée donnée.
Prévention des boucles infinies
Dans EventBridge, il est possible de créer une règle qui conduit à des boucles infinies, dans lesquelles la règle s'exécute à plusieurs reprises. Si vous disposez d’une règle qui provoque une boucle infinie, réécrivez-la de sorte que les actions entreprises par la règle ne correspondent pas à la même règle.
Par exemple, une règle qui détecte que les listes ACL ont été modifiées sur un compartiment Amazon S3, puis qui exécute un logiciel pour les faire passer à un nouvel état provoque une boucle infinie. L’un des moyens de résoudre ce problème consiste à réécrire la règle afin qu’elle ne corresponde qu’aux listes ACL dans un état incorrect.
Une boucle infinie peut rapidement entraîner des coûts plus importants que prévu. Nous vous recommandons d'utiliser les budgets, qui vous avertissent lorsque les frais dépassent votre limite spécifiée. Pour plus d'informations, consultez Gestion des coûts avec les budgets.
Mes événements ne sont pas livrés à la file d'attente Amazon SQS cible
Si votre file d’attente Amazon SQS est chiffrée, vous devez créer une clé KMS gérée par le client et inclure la section d’autorisation suivante dans votre stratégie de clé KMS. Pour plus d'informations, consultez la section Configuration AWS KMS des autorisations.
{ "Sid": "Allow EventBridge to use the key", "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*" }
Ma règle s’exécute, mais je ne vois aucun message publié dans ma rubrique Amazon SNS
Scénario 1
Vous devez disposer d’une autorisation pour publier des messages dans votre rubrique Amazon SNS. Utilisez la commande suivante à l'aide de AWS CLI, en remplaçant us-east-1 par votre région et en utilisant l'ARN de votre rubrique.
aws sns get-topic-attributes --regionus-east-1--topic-arn "arn:aws:sns:us-east-1:123456789012:MyTopic"
Pour obtenir l’autorisation appropriée, les attributs de votre politique doivent être similaires aux attributs suivants.
Si events.amazonaws.com n’a pas l’autorisation Publish dans votre politique, commencez par copier la politique actuelle, puis ajoutez l’instruction suivante à la liste des instructions.
{\"Sid\":\"Allow_Publish_Events\", \"Effect\":\"Allow\",\"Principal\":{\"Service\":\"events.amazonaws.com\"}, \"Action\":\"sns:Publish\", \"Resource\":\"arn:aws:sns:us-east-1:123456789012:MyTopic\"}
Définissez ensuite les attributs du sujet à l' AWS CLI aide de la commande suivante.
aws sns set-topic-attributes --regionus-east-1--topic-arn "arn:aws:sns:us-east-1:123456789012:MyTopic" --attribute-name Policy --attribute-valueNEW_POLICY_STRING
Note
Scénario 2
Si votre rubrique SNS est chiffrée, vous devez inclure la section suivante dans votre stratégie de clé KMS.
{ "Sid": "Allow EventBridge to use the key", "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*" }
Ma rubrique Amazon SNS dispose toujours d'autorisations EventBridge même après la suppression de la règle associée à la rubrique Amazon SNS
Lorsque vous créez une règle avec Amazon SNS comme cible, EventBridge ajoute une autorisation à votre sujet Amazon SNS en votre nom. Si vous supprimez la règle peu de temps après l'avoir créée, elle EventBridge risque de ne pas supprimer l'autorisation de votre rubrique Amazon SNS. Si cela se produit, vous pouvez supprimer l’autorisation de la rubrique à l’aide de la commande aws sns set-topic-attributes. Pour en savoir plus sur les autorisations basées sur une ressource pour l’envoi d’événements, consultez Utilisation de politiques basées sur les ressources pour Amazon EventBridge.
Avec quelles clés de condition IAM puis-je utiliser ? EventBridge
EventBridge prend en charge AWS toutes les clés de condition (voir IAM et les clés AWS STS contextuelles de condition dans le Guide de l'utilisateur IAM), ainsi que les clés répertoriées sur. Utilisation des conditions de politique IAM dans Amazon EventBridge
Comment savoir si les EventBridge règles ne sont pas respectées ?
Vous pouvez utiliser l'alarme suivante pour vous avertir lorsque vos EventBridge règles ne sont pas respectées.
Pour créer une alarme pour vous alerter lorsque les règles sont interrompues
-
Ouvrez la CloudWatch console à l'adresse https://console.aws.amazon.com/cloudwatch/
. -
Sélectionnez Create Alarm (Créer une alerte). Dans le volet CloudWatch Mesures par catégorie, choisissez Events Metrics.
-
Dans la liste des indicateurs, sélectionnez FailedInvocations.
-
Au-dessus du graphique, choisissez Statistique, Somme.
-
Pour Période, choisissez une valeur, par exemple, 5 minutes. Choisissez Suivant.
-
Sous Seuil d'alarme, dans Nom, saisissez un nom unique pour l'alarme, par exemple my FailedRules. Pour Description, entrez une description de l’alarme, par exemple : Les règles ne livrent pas les événements aux cibles.
-
Pour is, choisissez >= et 1. Pour pour, entrez 10.
-
Sous Actions, pour Whenever this alarm (Chaque fois que cette alerte), choisissez State is ALARM (L'état est alerte).
-
Pour Send notification to (Envoyer une notification à), sélectionnez une rubrique Amazon SNS existante ou créez-en une. Pour créer une rubrique, choisissez New list. Tapez un nom pour la nouvelle rubrique Amazon SNS, par exemple : my FailedRules.
-
Pour Email list, tapez une liste séparée par des virgules des adresses e-mail pour être informé lorsque l'alarme passe à l'état ALARME.
-
Sélectionnez Create Alarm (Créer une alerte).