Résolution des problèmes liés à Amazon EventBridge - Amazon EventBridge

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 liés à Amazon EventBridge

Vous pouvez suivre les étapes décrites dans cette section pour résoudre les problèmes d'Amazon EventBridge.

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
  1. À l'aide de AWS CLI, exécutez la commande suivante avec votre fonction et votre AWS région :

    aws lambda get-policy --function-name MyFunction --region us-east-1

    Le résultat suivant doit s'afficher.

    { "Policy": "{\"Version\":\"2012-10-17\", \"Statement\":[ {\"Condition\":{\"ArnLike\":{\"AWS:SourceArn\":\"arn:aws:events:us-east-1:123456789012:rule/MyRule\"}}, \"Action\":\"lambda:InvokeFunction\", \"Resource\":\"arn:aws:lambda:us-east-1:123456789012:function:MyFunction\", \"Effect\":\"Allow\", \"Principal\":{\"Service\":\"events.amazonaws.com\"}, \"Sid\":\"MyId\"} ], \"Id\":\"default\"}" }
  2. 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-name MyFunction \ --statement-id MyId \ --action 'lambda:InvokeFunction' \ --principal events.amazonaws.com \ --source-arn arn:aws:events:us-east-1:123456789012:rule/MyRule
  3. Si la sortie contient un champ SourceAccount, vous devez le supprimer. Un SourceAccount paramètre EventBridge empêche d'invoquer la fonction.

Note

Si la politique 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 correctes sur 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-name MyFunction \ --statement-id MyId \ --action 'lambda:InvokeFunction' \ --principal events.amazonaws.com \ --source-arn arn:aws:events:us-east-1:123456789012:rule/MyRule --qualifier alias 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 un court laps de temps TriggeredRulesInvocations, vérifiez les CloudWatch statistiques et FailedInvocations votre règle. Pour plus d'informations sur ces statistiques, consultez Monitoring Amazon EventBridge.

Si la règle est destinée à correspondre à un événement provenant d'un AWS service, effectuez l'une des opérations suivantes :

  • Utilisez l’action TestEventPattern pour vérifier si le modèle d’événement de votre règle correspond à un événement de test. Pour plus d'informations, consultez TestEventPatternle 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'expressioncron(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 --name TestRule --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 --name TestRule --schedule-expression 'cron(0/5 * * * ? *)'

La résolution maximale 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.

Ma règle correspond aux appels d'API de service AWS globaux mais elle n'a pas été exécutée

AWS les services internationaux, tels que IAM et Amazon Route 53, ne sont disponibles que dans la région de l'est des États-Unis (Virginie du Nord). Les événements liés aux appels d' AWS API provenant de services internationaux ne sont donc disponibles que dans cette région. Pour plus d’informations, consultez Événements organisés par AWS les services.

Le rôle IAM associé à ma règle est ignoré lors de l’exécution de la règle

EventBridge utilise uniquement les rôles IAM pour les règles qui envoient des événements aux flux Kinesis. Pour les règles qui invoquent des fonctions Lambda ou des rubriques Amazon SNS, vous devez fournir des autorisations basées sur une ressource.

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 dans le 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 traitent deux points (:)) ou une barre oblique (/) comme le même caractère dans Amazon Resource Names (ARN)., 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 AWS d'appel d'API provenant de CloudTrail, n'ont aucun élément 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ù les ressources de votre cible sont limitées. 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 replanifie 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 livrer 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 Politique relative aux nouvelles tentatives d'événements et utilisation de files d'attente de lettres mortes.

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 entrant et que le service cible limite les demandes effectuées en votre nom, il est EventBridge possible que la livraison ne EventBridge soit pas relancée.

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, où la règle s'exécute de manière répétée. 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 en remplaçant us-east-1 par votre région et en utilisant l'ARN de votre sujet. AWS CLI

aws sns get-topic-attributes --region us-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.

"{\"Version\":\"2012-10-17\", \"Id\":\"__default_policy_ID\", \"Statement\":[{\"Sid\":\"__default_statement_ID\", \"Effect\":\"Allow\", \"Principal\":{\"AWS\":\"*\"}, \"Action\":[\"SNS:Subscribe\", \"SNS:ListSubscriptionsByTopic\", \"SNS:DeleteTopic\", \"SNS:GetTopicAttributes\", \"SNS:Publish\", \"SNS:RemovePermission\", \"SNS:AddPermission\", \"SNS:SetTopicAttributes\"], \"Resource\":\"arn:aws:sns:us-east-1:123456789012:MyTopic\", \"Condition\":{\"StringEquals\":{\"AWS:SourceOwner\":\"123456789012\"}}},{\"Sid\":\"Allow_Publish_Events\", \"Effect\":\"Allow\", \"Principal\":{\"Service\":\"events.amazonaws.com\"}, \"Action\":\"sns:Publish\", \"Resource\":\"arn:aws:sns:us-east-1:123456789012:MyTopic\"}]}"

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 --region us-east-1 --topic-arn "arn:aws:sns:us-east-1:123456789012:MyTopic" --attribute-name Policy --attribute-value NEW_POLICY_STRING
Note

Si la politique est incorrecte, vous pouvez également modifier la règle dans la EventBridge console en la supprimant puis en la rajoutant à la règle. EventBridge définit les autorisations correctes sur la cible.

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": "*" }

Mon sujet Amazon SNS dispose toujours d'autorisations EventBridge même après avoir supprimé la règle associée au sujet Amazon SNS

Lorsque vous créez une règle avec Amazon SNS comme cible, vous ajoutez l'autorisation d' EventBridge accéder à votre rubrique Amazon SNS en votre nom. Si vous supprimez la règle peu de temps après l'avoir créée, il est EventBridge possible que l'autorisation ne soit pas supprimée 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.

Quelles clés de condition IAM puis-je utiliser ? EventBridge

EventBridge prend en charge AWS les clés de condition générales (voir les clés contextuelles IAM et de AWS STS condition dans le guide de l'utilisateur IAM), ainsi que les clés répertoriées sur. Utilisation de conditions de politique IAM pour un contrôle d'accès précis

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
  1. Ouvrez la CloudWatch console à l'adresse https://console.aws.amazon.com/cloudwatch/.

  2. Sélectionnez Create Alarm (Créer une alerte). Dans le volet CloudWatch Metrics by Category, sélectionnez Events Metrics.

  3. Dans la liste des mesures, sélectionnez FailedInvocations.

  4. Au-dessus du graphique, choisissez Statistique, Somme.

  5. Pour Période, choisissez une valeur, par exemple, 5 minutes. Choisissez Suivant.

  6. Sous Seuil d'alarme, pour Nom, tapez un nom unique pour l'alarme, par exemple myFailedRules. Pour Description, entrez une description de l’alarme, par exemple : Les règles ne livrent pas les événements aux cibles.

  7. Pour is, choisissez >= et 1. Pour pour, entrez 10.

  8. Sous Actions, pour Whenever this alarm (Chaque fois que cette alerte), choisissez State is ALARM (L'état est alerte).

  9. 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 :. myFailedRules

  10. 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.

  11. Sélectionnez Create Alarm (Créer une alerte).